Update mingw prebuilts w/ binutils pecoff pdb name am: 904c3639d1 am: 66873836a9 am: 35a96ca999
am: d3566f4f19

Change-Id: I414a8b2bc4c2e286e09412c6b07a3adffd595ed5
diff --git a/NOTICE b/NOTICE
deleted file mode 120000
index bea2ca2..0000000
--- a/NOTICE
+++ /dev/null
@@ -1 +0,0 @@
-licenses/gcc-4.8.3/COPYING
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..d020a8c
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,14340 @@
+
+The newlib subdirectory is a collection of software from several sources.
+
+Each file may have its own copyright/license that is embedded in the source 
+file.  Unless otherwise noted in the body of the source file(s), the following copyright
+notices will apply to the contents of the newlib subdirectory:
+
+(1) Red Hat Incorporated
+
+Copyright (c) 1994-2009  Red Hat, Inc. All rights reserved.
+
+This copyrighted material is made available to anyone wishing to use,
+modify, copy, or redistribute it subject to the terms and conditions
+of the BSD License.   This program is distributed in the hope that 
+it will be useful, but WITHOUT ANY WARRANTY expressed or implied, 
+including the implied warranties of MERCHANTABILITY or FITNESS FOR 
+A PARTICULAR PURPOSE.  A copy of this license is available at 
+http://www.opensource.org/licenses. Any Red Hat trademarks that are
+incorporated in the source code or documentation are not subject to
+the BSD License and may only be used or replicated with the express
+permission of Red Hat, Inc.
+
+(2) University of California, Berkeley
+
+Copyright (c) 1981-2000 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of the University nor the names of its contributors 
+      may be used to endorse or promote products derived from this software 
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+
+(3) David M. Gay (AT&T 1991, Lucent 1998)
+
+The author of this software is David M. Gay.
+
+Copyright (c) 1991 by AT&T.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose without fee is hereby granted, provided that this entire notice
+is included in all copies of any software which is or includes a copy
+or modification of this software and in all copies of the supporting
+documentation for such software.
+
+THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY
+REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998-2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+
+(4) Advanced Micro Devices
+
+Copyright 1989, 1990 Advanced Micro Devices, Inc.
+
+This software is the property of Advanced Micro Devices, Inc  (AMD)  which
+specifically  grants the user the right to modify, use and distribute this
+software provided this notice is not removed or altered.  All other rights
+are reserved by AMD.
+
+AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
+SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
+DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
+USE OF THIS SOFTWARE.
+
+So that all may benefit from your experience, please report  any  problems
+or  suggestions about this software to the 29K Technical Support Center at
+800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
+0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
+
+Advanced Micro Devices, Inc.
+29K Support Products
+Mail Stop 573
+5900 E. Ben White Blvd.
+Austin, TX 78741
+800-292-9263
+
+(5) 
+
+(6)
+
+(7) Sun Microsystems
+
+Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+
+Developed at SunPro, a Sun Microsystems, Inc. business.
+Permission to use, copy, modify, and distribute this
+software is freely granted, provided that this notice is preserved.
+
+(8) Hewlett Packard
+
+(c) Copyright 1986 HEWLETT-PACKARD COMPANY
+
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty:
+    permission to use, copy, modify, and distribute this file
+for any purpose is hereby granted without fee, provided that
+the above copyright notice and this notice appears in all
+copies, and that the name of Hewlett-Packard Company not be
+used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Hewlett-Packard Company makes no representations about the
+suitability of this software for any purpose.
+
+(9) Hans-Peter Nilsson
+
+Copyright (C) 2001 Hans-Peter Nilsson
+
+Permission to use, copy, modify, and distribute this software is
+freely granted, provided that the above copyright notice, this notice
+and the following disclaimer are preserved with no changes.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.
+
+(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only)
+
+Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr)
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+(11) Christopher G. Demetriou
+
+Copyright (c) 2001 Christopher G. Demetriou
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(12) SuperH, Inc.
+
+Copyright 2002 SuperH, Inc. All rights reserved
+
+This software is the property of SuperH, Inc (SuperH) which specifically
+grants the user the right to modify, use and distribute this software
+provided this notice is not removed or altered.  All other rights are
+reserved by SuperH.
+
+SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO
+THIS SOFTWARE.  IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM
+THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE.
+
+So that all may benefit from your experience, please report any problems
+or suggestions about this software to the SuperH Support Center via
+e-mail at softwaresupport@superh.com .
+
+SuperH, Inc.
+405 River Oaks Parkway
+San Jose
+CA 95134
+USA
+
+(13) Royal Institute of Technology
+
+Copyright (c) 1999 Kungliga Tekniska Högskolan
+(Royal Institute of Technology, Stockholm, Sweden).
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of KTH nor the names of its contributors may be
+   used to endorse or promote products derived from this software without
+   specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(14) Alexey Zelkin
+
+Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(15) Andrey A. Chernov
+
+Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(16) FreeBSD
+
+Copyright (c) 1997-2002 FreeBSD Project.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(17) S. L. Moshier
+
+Author:  S. L. Moshier.
+
+Copyright (c) 1984,2000 S.L. Moshier
+
+Permission to use, copy, modify, and distribute this software for any
+purpose without fee is hereby granted, provided that this entire notice
+is included in all copies of any software which is or includes a copy
+or modification of this software and in all copies of the supporting
+documentation for such software.
+
+THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTY.  IN PARTICULAR,  THE AUTHOR MAKES NO REPRESENTATION
+OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
+SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+(18) Citrus Project
+
+Copyright (c)1999 Citrus Project,
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(19) Todd C. Miller
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(20) DJ Delorie (i386)
+Copyright (C) 1991 DJ Delorie
+All rights reserved.
+
+Redistribution, modification, and use in source and binary forms is permitted
+provided that the above copyright notice and following paragraph are
+duplicated in all such forms.
+
+This file is distributed WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+(21) Free Software Foundation LGPL License (*-linux* targets only)
+
+   Copyright (C) 1990-1999, 2000, 2001    Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only)
+
+Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+(23) Intel (i960)
+
+Copyright (c) 1993 Intel Corporation
+
+Intel hereby grants you permission to copy, modify, and distribute this
+software and its documentation.  Intel grants this permission provided
+that the above copyright notice appears in all copies and that both the
+copyright notice and this permission notice appear in supporting
+documentation.  In addition, Intel grants this permission provided that
+you prominently mark as "not part of the original" any modifications
+made to this software or documentation, and that the name of Intel
+Corporation not be used in advertising or publicity pertaining to
+distribution of the software or the documentation without specific,
+written prior permission.
+
+Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE.  Intel makes no guarantee or
+representations regarding the use of, or the results of the use of,
+the software and documentation in terms of correctness, accuracy,
+reliability, currentness, or otherwise; and you rely on the software,
+documentation and results solely at your own risk.
+
+IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+OF ANY KIND.  IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+
+(24) Hewlett-Packard  (hppa targets only)
+
+(c) Copyright 1986 HEWLETT-PACKARD COMPANY
+
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty:
+    permission to use, copy, modify, and distribute this file
+for any purpose is hereby granted without fee, provided that
+the above copyright notice and this notice appears in all
+copies, and that the name of Hewlett-Packard Company not be
+used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Hewlett-Packard Company makes no representations about the
+suitability of this software for any purpose.
+
+(25) Henry Spencer (only *-linux targets)
+
+Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
+This software is not subject to any license of the American Telephone
+and Telegraph Company or of the Regents of the University of California.
+
+Permission is granted to anyone to use this software for any purpose on
+any computer system, and to alter it and redistribute it, subject
+to the following restrictions:
+
+1. The author is not responsible for the consequences of use of this
+   software, no matter how awful, even if they arise from flaws in it.
+
+2. The origin of this software must not be misrepresented, either by
+   explicit claim or by omission.  Since few users ever read sources,
+   credits must appear in the documentation.
+
+3. Altered versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.  Since few users
+   ever read sources, credits must appear in the documentation.
+
+4. This notice may not be removed or altered.
+
+(26) Mike Barcroft
+
+Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(27) Konstantin Chuguev (--enable-newlib-iconv)
+
+Copyright (c) 1999, 2000
+   Konstantin Chuguev.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+   iconv (Charset Conversion Library) v2.0
+
+(28) Artem Bityuckiy (--enable-newlib-iconv)
+
+Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation.
+Rights transferred to Franklin Electronic Publishers.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(29) IBM, Sony, Toshiba (only spu-* targets)
+
+  (C) Copyright 2001,2006,
+  International Business Machines Corporation,
+  Sony Computer Entertainment, Incorporated,
+  Toshiba Corporation,
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the names of the copyright holders nor the names of their
+      contributors may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+(30) - Alex Tatmanjants (targets using libc/posix)
+
+  Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
+ 		at Electronni Visti IA, Kiev, Ukraine.
+ 			All rights reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+(31) - M. Warner Losh (targets using libc/posix)
+
+  Copyright (c) 1998, M. Warner Losh <imp@freebsd.org>
+  All rights reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+(32) - Andrey A. Chernov (targets using libc/posix)
+
+  Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia.
+  All rights reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+(33) - Daniel Eischen (targets using libc/posix)
+
+  Copyright (c) 2001 Daniel Eischen <deischen@FreeBSD.org>.
+  All rights reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+
+(34) - Jon Beniston (only lm32-* targets)
+
+ Contributed by Jon Beniston <jon@beniston.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+
+(35) - ARM Ltd (arm and thumb variant targets only)
+
+ Copyright (c) 2009 ARM Ltd
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. The name of the company may not be used to endorse or promote
+    products derived from this software without specific prior written
+    permission.
+
+ THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(36) - Xilinx, Inc. (microblaze-* and powerpc-* targets)
+
+Copyright (c) 2004, 2009 Xilinx, Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1.  Redistributions source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2.  Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3.  Neither the name of Xilinx nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+(37) Texas Instruments Incorporated (tic6x-* targets)
+
+Copyright (c) 1996-2010 Texas Instruments Incorporated
+http://www.ti.com/
+
+ Redistribution and  use in source  and binary forms, with  or without
+ modification,  are permitted provided  that the  following conditions
+ are met:
+
+    Redistributions  of source  code must  retain the  above copyright
+    notice, this list of conditions and the following disclaimer.
+
+    Redistributions in binary form  must reproduce the above copyright
+    notice, this  list of conditions  and the following  disclaimer in
+    the  documentation  and/or   other  materials  provided  with  the
+    distribution.
+
+    Neither the  name of Texas Instruments Incorporated  nor the names
+    of its  contributors may  be used to  endorse or  promote products
+    derived  from   this  software  without   specific  prior  written
+    permission.
+
+ THIS SOFTWARE  IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS
+ "AS IS"  AND ANY  EXPRESS OR IMPLIED  WARRANTIES, INCLUDING,  BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL  DAMAGES  (INCLUDING, BUT  NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF  LIABILITY, WHETHER IN CONTRACT, STRICT  LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(38) National Semiconductor (cr16-* and crx-* targets)
+
+Copyright (c) 2004 National Semiconductor Corporation
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply. 
+
+(39) - Adapteva, Inc. (epiphany-* targets)
+
+Copyright (c) 2011, Adapteva, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of Adapteva nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(40) - Altera Corportion (nios2-* targets)
+
+Copyright (c) 2003 Altera Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+   o Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer. 
+   o Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the 
+     documentation and/or other materials provided with the distribution. 
+   o Neither the name of Altera Corporation nor the names of its 
+     contributors may be used to endorse or promote products derived from
+     this software without specific prior written permission. 
+ 
+THIS SOFTWARE IS PROVIDED BY ALTERA CORPORATION, THE COPYRIGHT HOLDER,
+AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+
+(41) Ed Schouten - Free BSD
+
+Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+The libgloss subdirectory is a collection of software from several sources.
+
+Each file may have its own copyright/license that is embedded in the source 
+file.  Unless otherwise noted in the body of the source file(s), the following copyright
+notices will apply to the contents of the libgloss subdirectory:
+
+(1) Red Hat Incorporated
+
+Copyright (c) 1994-2009  Red Hat, Inc. All rights reserved.
+
+This copyrighted material is made available to anyone wishing to use, modify,
+copy, or redistribute it subject to the terms and conditions of the BSD 
+License.   This program is distributed in the hope that it will be useful, 
+but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties 
+of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  A copy of this license
+is available at http://www.opensource.org/licenses. Any Red Hat trademarks that
+are incorporated in the source code or documentation are not subject to the BSD
+License and may only be used or replicated with the express permission of 
+Red Hat, Inc.
+
+(2) University of California, Berkeley
+
+Copyright (c) 1981-2000 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of the University nor the names of its contributors may
+      be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+
+(3) DJ Delorie
+
+Copyright (C) 1993 DJ Delorie
+All rights reserved.
+
+Redistribution, modification,  and use in source and binary forms is permitted
+provided that the above copyright notice and following paragraph are
+duplicated in all such forms.
+
+This file is distributed WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+(4) (formerly GPL for fr30)
+
+The GPL is no longer applicable to the fr30 platform.  The piece of
+code (syscalls.c) referencing the GPL has been officially relicensed.
+
+(5) Advanced Micro Devices
+
+Copyright 1989, 1990 Advanced Micro Devices, Inc.
+
+This software is the property of Advanced Micro Devices, Inc  (AMD)  which
+specifically  grants the user the right to modify, use and distribute this
+software provided this notice is not removed or altered.  All other rights
+are reserved by AMD.
+
+AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
+SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
+DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
+USE OF THIS SOFTWARE.
+
+So that all may benefit from your experience, please report  any  problems
+or  suggestions about this software to the 29K Technical Support Center at
+800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
+0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
+
+Advanced Micro Devices, Inc.
+29K Support Products
+Mail Stop 573
+5900 E. Ben White Blvd.
+Austin, TX 78741
+800-292-9263
+
+(6) - Analog Devices, Inc. (bfin-* targets)
+
+Copyright (C) 2006, 2008, 2009, 2011, 2012 Analog Devices, Inc.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+(7) University of Utah and the Computer Systems Laboratory (CSL)
+    [applies only to hppa*-*-pro* targets]
+Copyright (c) 1990,1994 The University of Utah and
+the Computer Systems Laboratory (CSL).  All rights reserved.
+
+Permission to use, copy, modify and distribute this software is hereby
+granted provided that (1) source code retains these copyright, permission,
+and disclaimer notices, and (2) redistributions including binaries
+reproduce the notices in supporting documentation, and (3) all advertising
+materials mentioning features or use of this software display the following
+acknowledgement: ``This product includes software developed by the
+Computer Systems Laboratory at the University of Utah.''
+
+THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
+IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
+ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+
+CSL requests users of this software to return to csl-dist@cs.utah.edu any
+improvements that they make and grant CSL redistribution rights.
+
+(8) Sun Microsystems
+
+Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+
+Developed at SunPro, a Sun Microsystems, Inc. business.
+Permission to use, copy, modify, and distribute this
+software is freely granted, provided that this notice is preserved.
+
+(9) Hewlett Packard
+
+(c) Copyright 1986 HEWLETT-PACKARD COMPANY
+
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty:
+
+permission to use, copy, modify, and distribute this file
+for any purpose is hereby granted without fee, provided that
+the above copyright notice and this notice appears in all
+copies, and that the name of Hewlett-Packard Company not be
+used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Hewlett-Packard Company makes no representations about the
+suitability of this software for any purpose.
+
+(10) Hans-Peter Nilsson
+
+Copyright (C) 2001 Hans-Peter Nilsson
+
+Permission to use, copy, modify, and distribute this software is
+freely granted, provided that the above copyright notice, this notice
+and the following disclaimer are preserved with no changes.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.
+
+(11) IBM Corp. spu processor (only spu-* targets)
+
+(C) Copyright IBM Corp. 2005, 2006
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+    * Neither the name of IBM nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+(12) Jon Beniston (only lm32-* targets)
+
+ Contributed by Jon Beniston <jon@beniston.com>
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+(13) - Xilinx, Inc. (microblaze-* and powerpc-* targets)
+
+Copyright (c) 2004, 2009 Xilinx, Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1.  Redistributions source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2.  Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3.  Neither the name of Xilinx nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+(14) - National Semiconductor Corporation
+
+Copyright (c) 2004 National Semiconductor Corporation
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+
+(15) - CodeSourcery, Inc. (tic6x-* targets)
+
+Copyright (c) 2010 CodeSourcery, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of CodeSourcery nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY CODESOURCERY, INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL CODESOURCERY BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+(16) - GPL with exception (sparc-*leon*, crx-*, cr16-* targets only)
+
+  Copyright (C) 1992 Free Software Foundation, Inc.
+  Written By David Vinayak Henkel-Wallace, June 1992
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file with other programs, and to distribute
+those programs without any restriction coming from the use of this
+file.  (The General Public License restrictions do apply in other
+respects; for example, they cover modification of the file, and
+distribution when not linked into another program.)
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+   As a special exception, if you link this library with files
+   compiled with GCC to produce an executable, this does not cause
+   the resulting executable to be covered by the GNU General Public License.
+   This exception does not however invalidate any other reasons why
+   the executable file might be covered by the GNU General Public License.
+
+
+(17) - Adapteva, Inc. (epiphany-* targets)
+
+Copyright (c) 2011, Adapteva, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of Adapteva nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+^L
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+^L
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it
+does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/README b/README
index e81e7cf..d898227 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This file has been automatically generated on Fri Sep 23 14:59:08 UTC 2016 with the following command:
+This file has been automatically generated on Thu Feb  2 20:33:18 UTC 2017 with the following command:
 build.sh 
 
 The MD5 hashes for the original sources packages are:
diff --git a/bin/x86_64-w64-mingw32-addr2line b/bin/x86_64-w64-mingw32-addr2line
index b151286..dba1a3b 100755
--- a/bin/x86_64-w64-mingw32-addr2line
+++ b/bin/x86_64-w64-mingw32-addr2line
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-ar b/bin/x86_64-w64-mingw32-ar
index 711a995..44b299c 100755
--- a/bin/x86_64-w64-mingw32-ar
+++ b/bin/x86_64-w64-mingw32-ar
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-as b/bin/x86_64-w64-mingw32-as
index 5a09484..e05e3d4 100755
--- a/bin/x86_64-w64-mingw32-as
+++ b/bin/x86_64-w64-mingw32-as
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-c++filt b/bin/x86_64-w64-mingw32-c++filt
index 79a747d..0310aa1 100755
--- a/bin/x86_64-w64-mingw32-c++filt
+++ b/bin/x86_64-w64-mingw32-c++filt
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-dlltool b/bin/x86_64-w64-mingw32-dlltool
index a15b045..346979d 100755
--- a/bin/x86_64-w64-mingw32-dlltool
+++ b/bin/x86_64-w64-mingw32-dlltool
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-gprof b/bin/x86_64-w64-mingw32-gprof
index a2aa780..79c46c1 100755
--- a/bin/x86_64-w64-mingw32-gprof
+++ b/bin/x86_64-w64-mingw32-gprof
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-ld b/bin/x86_64-w64-mingw32-ld
index 81aaff1..de6bc0b 100755
--- a/bin/x86_64-w64-mingw32-ld
+++ b/bin/x86_64-w64-mingw32-ld
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-ld.bfd b/bin/x86_64-w64-mingw32-ld.bfd
index 81aaff1..de6bc0b 100755
--- a/bin/x86_64-w64-mingw32-ld.bfd
+++ b/bin/x86_64-w64-mingw32-ld.bfd
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-nm b/bin/x86_64-w64-mingw32-nm
index 904d0a6..596472b 100755
--- a/bin/x86_64-w64-mingw32-nm
+++ b/bin/x86_64-w64-mingw32-nm
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-objcopy b/bin/x86_64-w64-mingw32-objcopy
index 6192640..66218f9 100755
--- a/bin/x86_64-w64-mingw32-objcopy
+++ b/bin/x86_64-w64-mingw32-objcopy
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-objdump b/bin/x86_64-w64-mingw32-objdump
index 70f3eff..1648cac 100755
--- a/bin/x86_64-w64-mingw32-objdump
+++ b/bin/x86_64-w64-mingw32-objdump
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-ranlib b/bin/x86_64-w64-mingw32-ranlib
index 5c2ca56..620d213 100755
--- a/bin/x86_64-w64-mingw32-ranlib
+++ b/bin/x86_64-w64-mingw32-ranlib
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-size b/bin/x86_64-w64-mingw32-size
index a51f40e..59ee848 100755
--- a/bin/x86_64-w64-mingw32-size
+++ b/bin/x86_64-w64-mingw32-size
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-strings b/bin/x86_64-w64-mingw32-strings
index 22f7fb8..e92843c 100755
--- a/bin/x86_64-w64-mingw32-strings
+++ b/bin/x86_64-w64-mingw32-strings
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-strip b/bin/x86_64-w64-mingw32-strip
index d70a671..5edbc2b 100755
--- a/bin/x86_64-w64-mingw32-strip
+++ b/bin/x86_64-w64-mingw32-strip
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-widl b/bin/x86_64-w64-mingw32-widl
index a18513b..daa843b 100755
--- a/bin/x86_64-w64-mingw32-widl
+++ b/bin/x86_64-w64-mingw32-widl
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-windmc b/bin/x86_64-w64-mingw32-windmc
index 3efa382..8e73b82 100755
--- a/bin/x86_64-w64-mingw32-windmc
+++ b/bin/x86_64-w64-mingw32-windmc
Binary files differ
diff --git a/bin/x86_64-w64-mingw32-windres b/bin/x86_64-w64-mingw32-windres
index aec8e95..bb84dc4 100755
--- a/bin/x86_64-w64-mingw32-windres
+++ b/bin/x86_64-w64-mingw32-windres
Binary files differ
diff --git a/build.sh b/build.sh
index a02798d..dcaa6a9 100755
--- a/build.sh
+++ b/build.sh
@@ -24,27 +24,6 @@
 ANDROID_BUILD_TOP=$(realpath $PROGDIR/../..)
 TOOLCHAIN_DIR=$(realpath $ANDROID_BUILD_TOP/toolchain)
 
-# Top level out directory.
-OUT_DIR=$ANDROID_BUILD_TOP/out
-
-# Name of the directory inside the package.
-PACKAGE_DIR=x86_64-w64-mingw32-4.8
-
-# Directory to isolate the install package from any similarly named directories.
-OUTER_INSTALL_DIR=$OUT_DIR/install
-
-# Actual install path.
-INSTALL_DIR=$OUTER_INSTALL_DIR/$PACKAGE_DIR
-
-# Install directory for build dependencies that are not in the final package
-# (gmp and whatnot).
-SUPPORT_DIR=$INSTALL_DIR
-
-# For the final artifacts. Will be archived on the build server.
-if [ -z "$DIST_DIR" ]; then
-  DIST_DIR=$OUT_DIR/dist
-fi
-
 HELP=
 VERBOSE=2
 
@@ -106,7 +85,6 @@
     fi
 }
 
-ARCH=x86_64
 NUM_CORES=$(grep -c -e '^processor' /proc/cpuinfo)
 JOBS=$(( $NUM_CORES * 2 ))
 
@@ -115,14 +93,14 @@
 MPC_VERSION=1.0.1
 BINUTILS_VERSION=2.25
 GCC_VERSION=4.8.3
-MINGW_W64_VERSION=v4.0.4
+MINGW_W64_VERSION=v5.0.0
 
 TARGET_ARCH=x86_64
 TARGET_MULTILIBS=true  # not empty to enable multilib
-FORCE_ALL=true
-FORCE_BUILD=true
 CLEANUP=
 
+OPT_GCC_VERSION=
+
 for opt; do
     optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
     case $opt in
@@ -132,6 +110,7 @@
         -j*|--jobs=*) JOBS=$optarg;;
         --target-arch=*) TARGET_ARCH=$optarg;;
         --no-multilib) TARGET_MULTILIBS="";;
+        --gcc-version=*) OPT_GCC_VERSION=$optarg;;
         --cleanup) CLEANUP=true;;
         -*) panic "Unknown option '$opt', see --help for list of valid ones.";;
         *) panic "This script doesn't take any parameter, see --help for details.";;
@@ -156,11 +135,43 @@
   -j<num>                      Same as --jobs=<num>."
   --no-multilib                Disable multilib toolchain build."
   --target-arch=<arch>         Select default target architecture [$TARGET_ARCH]."
-
+  --gcc-version=<version>      Select alternative GCC version [$GCC_VERSION]"
 EOF
     exit 0
 fi
 
+if [ "$OPT_GCC_VERSION" ]; then
+    GCC_VERSION=$OPT_GCC_VERSION
+fi
+
+GCC_SRC_DIR=$TOOLCHAIN_DIR/gcc/gcc-$GCC_VERSION
+if [ ! -d "$GCC_SRC_DIR" ]; then
+    panic "Missing GCC source directory: $GCC_SRC_DIR"
+fi
+
+GCC_MAJOR_MINOR=$(echo "$GCC_VERSION" | cut -d. -f1-2)
+
+# Top level out directory.
+OUT_DIR=$ANDROID_BUILD_TOP/out
+
+# Name of the directory inside the package.
+PACKAGE_DIR=x86_64-w64-mingw32-$GCC_MAJOR_MINOR
+
+# Directory to isolate the install package from any similarly named directories.
+OUTER_INSTALL_DIR=$OUT_DIR/install
+
+# Actual install path.
+INSTALL_DIR=$OUTER_INSTALL_DIR/$PACKAGE_DIR
+
+# Install directory for build dependencies that are not in the final package
+# (gmp and whatnot).
+SUPPORT_DIR=$INSTALL_DIR
+
+# For the final artifacts. Will be archived on the build server.
+if [ -z "$DIST_DIR" ]; then
+  DIST_DIR=$OUT_DIR/dist
+fi
+
 BUILD_TAG64=x86_64-linux-gnu
 BUILD_TAG32=i686-linux-gnu
 
@@ -326,6 +337,7 @@
 fi
 
 var_append BINUTILS_CONFIGURE_OPTIONS "--with-sysroot=$INSTALL_DIR"
+var_append BINUTILS_CONFIGURE_OPTIONS "--enable-lto --enable-plugin --enable-gold"
 
 build_binutils_package binutils-$BINUTILS_VERSION $BINUTILS_CONFIGURE_OPTIONS
 
@@ -398,7 +410,7 @@
         cd $OUT_DIR/$PKGNAME &&
         log "$PKGNAME: Configuring" &&
         run $MINGW_W64_SRC/mingw-w64-headers/configure --prefix=$PREFIX_FOR_TARGET --host=$TARGET_TAG \
-            --build=$HOST_TAG --with-widl=$WITH_WIDL --enable-sdk=all --enable-secure-api
+            --build=$HOST_TAG --enable-sdk=all --enable-secure-api
         fail_panic "Can't configure mingw-64-headers"
 
         run make
@@ -493,7 +505,6 @@
 var_append GCC_CONFIGURE_OPTIONS "--with-sysroot=$INSTALL_DIR"
 var_append GCC_CONFIGURE_OPTIONS "--enable-threads=posix"
 
-# A bug in MinGW-w64 forces us to build and use widl.
 build_mingw_tools mingw-w64-tools
 build_mingw_headers mingw-w64-headers
 
@@ -514,7 +525,7 @@
 # Let's generate the licenses/ directory
 LICENSE_DIRS="$SRC_DIR"
 var_append LICENSE_DIRS "$TOOLCHAIN_DIR/binutils/binutils-$BINUTILS_VERSION"
-var_append LICENSE_DIRS "$TOOLCHAIN_DIR/gcc/gcc-$GCC_VERSION"
+var_append LICENSE_DIRS "$GCC_SRC_DIR"
 var_append LICENSE_DIRS "$EXTRACTED_PACKAGES"
 
 echo > $INSTALL_DIR/NOTICE
diff --git a/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcc.a b/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcc.a
index e390672..b2232c1 100644
--- a/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcc.a
+++ b/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcc.a
Binary files differ
diff --git a/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcov.a b/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcov.a
index fd76529..8dc0aca 100644
--- a/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcov.a
+++ b/lib/gcc/x86_64-w64-mingw32/4.8.3/32/libgcov.a
Binary files differ
diff --git a/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcc.a b/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcc.a
index b8d7dbb..bf05703 100644
--- a/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcc.a
+++ b/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcc.a
Binary files differ
diff --git a/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcov.a b/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcov.a
index 3876839..3a0fb82 100644
--- a/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcov.a
+++ b/lib/gcc/x86_64-w64-mingw32/4.8.3/libgcov.a
Binary files differ
diff --git a/lib/libgmp.a b/lib/libgmp.a
index b02f487..65c6dd7 100644
--- a/lib/libgmp.a
+++ b/lib/libgmp.a
Binary files differ
diff --git a/lib/libmpc.a b/lib/libmpc.a
index fbba6fe..a6e2ba1 100644
--- a/lib/libmpc.a
+++ b/lib/libmpc.a
Binary files differ
diff --git a/lib/libmpfr.a b/lib/libmpfr.a
index c73cb25..9cc4665 100644
--- a/lib/libmpfr.a
+++ b/lib/libmpfr.a
Binary files differ
diff --git a/lib64/libiberty.a b/lib64/libiberty.a
index b7cb83c..8ee125d 100644
--- a/lib64/libiberty.a
+++ b/lib64/libiberty.a
Binary files differ
diff --git a/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1 b/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1
index 223cfe9..6f175c6 100755
--- a/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1
+++ b/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1
Binary files differ
diff --git a/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1plus b/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1plus
index 6d179e1..ea98ab9 100755
--- a/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1plus
+++ b/libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1plus
Binary files differ
diff --git a/repo.prop b/repo.prop
index b3f3adf..1cf856c 100644
--- a/repo.prop
+++ b/repo.prop
@@ -1,11 +1,11 @@
 platform/manifest f7f30f2c711c5bb7af238ee5f7125cd3faf26572
-platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8 7a8824915a05bef8581fb1f614c4eee9564c4ba2
-toolchain/binutils 129dec3ed0e1fc07f75a4322014d770cfd642f4d
+platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8 e9534abf9e4916bc9f0f0c74b64ad2f404a34e97
+toolchain/binutils 9bf6cbf6dd88777719c5757922aff0190ec46539
 toolchain/cloog 604793eab97d360aef729f064674569ee6dbf3e1
-toolchain/gcc 535de7eb0179bdcd01fcd99f1dad6208250d3706
+toolchain/gcc 32c89c19b042a12b5a1bf0153299154ea5435c03
 toolchain/gmp b2acd5dbf47868ac5b5bc844e16d2cadcbd4c810
 toolchain/isl 0ccf95726af8ce58ad61ff474addbce3a31ba99c
-toolchain/mingw 56ddde351b6dc8558e0a6b08636e9af2dca3d5fd
+toolchain/mingw da9c1475a8979478fb9163b02e8991ffb6826e5b
 toolchain/mpc 835d16e92eed875638a8b5d552034c3b1aae045b
 toolchain/mpfr de979fc377db766591e7feaf052f0de59be46e76
 toolchain/ppl 979062d362bc5a1c00804237b408b19b4618fb24
diff --git a/share/info/dir b/share/info/dir
index 9269ae5..52bb20e 100644
--- a/share/info/dir
+++ b/share/info/dir
@@ -24,8 +24,10 @@
 * mpc: (mpc)Multiple Precision Complex Library.
 
 Software development
+* Cpp: (cpp).                   The GNU C preprocessor.
 * g++: (gcc).                   The GNU C++ compiler.
 * gcc: (gcc).                   The GNU Compiler Collection.
+* gccinstall: (gccinstall).     Installing the GNU Compiler Collection.
 * gccint: (gccint).             Internals of the GNU Compiler Collection.
 * gcov: (gcc) Gcov.             'gcov'--a test coverage program.
 
diff --git a/share/man/man1/x86_64-w64-mingw32-cpp.1 b/share/man/man1/x86_64-w64-mingw32-cpp.1
index 6126ee7..e11bc34 100644
--- a/share/man/man1/x86_64-w64-mingw32-cpp.1
+++ b/share/man/man1/x86_64-w64-mingw32-cpp.1
@@ -1,15 +1,7 @@
-.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
 .de Sp \" Vertical space (when we can't use .PP)
 .if t .sp .5v
 .if n .sp
@@ -46,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -53,20 +47,27 @@
 .el       .ds Aq '
 .\"
 .\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -180,11 +181,11 @@
 you are writing in.  Modern versions of the \s-1GNU\s0 assembler have macro
 facilities.  Most high level programming languages have their own
 conditional compilation and inclusion mechanism.  If all else fails,
-try a true general text processor, such as \s-1GNU\s0 M4.
+try a true general text processor, such as \s-1GNU M4.\s0
 .PP
-C preprocessors vary in some details.  This manual discusses the \s-1GNU\s0 C
+C preprocessors vary in some details.  This manual discusses the \s-1GNU C\s0
 preprocessor, which provides a small superset of the features of \s-1ISO\s0
-Standard C.  In its default mode, the \s-1GNU\s0 C preprocessor does not do a
+Standard C.  In its default mode, the \s-1GNU C\s0 preprocessor does not do a
 few things required by the standard.  These are features which are
 rarely, if ever, used, and may cause surprising changes to the meaning
 of a program which does not expect them.  To get strict \s-1ISO\s0 Standard C,
@@ -201,7 +202,7 @@
 Mode\fR.
 .PP
 For clarity, unless noted otherwise, references to \fB\s-1CPP\s0\fR in this
-manual refer to \s-1GNU\s0 \s-1CPP\s0.
+manual refer to \s-1GNU CPP.\s0
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 The C preprocessor expects two file names as arguments, \fIinfile\fR and
@@ -305,7 +306,7 @@
 .IP "\fB\-Wtraditional\fR" 4
 .IX Item "-Wtraditional"
 Warn about certain constructs that behave differently in traditional and
-\&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
+\&\s-1ISO C. \s0 Also warn about \s-1ISO C\s0 constructs that have no traditional C
 equivalent, and problematic constructs which should be avoided.
 .IP "\fB\-Wundef\fR" 4
 .IX Item "-Wundef"
@@ -358,7 +359,7 @@
 responsible for the system library, you may want to see them.
 .IP "\fB\-w\fR" 4
 .IX Item "-w"
-Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default.
+Suppress all warnings, including those which \s-1GNU CPP\s0 issues by default.
 .IP "\fB\-pedantic\fR" 4
 .IX Item "-pedantic"
 Issue all the mandatory diagnostics listed in the C standard.  Some of
@@ -530,7 +531,7 @@
 .el .IP "\f(CWiso9899:1990\fR" 4
 .IX Item "iso9899:1990"
 .PD
-The \s-1ISO\s0 C standard from 1990.  \fBc90\fR is the customary shorthand for
+The \s-1ISO C\s0 standard from 1990.  \fBc90\fR is the customary shorthand for
 this version of the standard.
 .Sp
 The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
@@ -552,7 +553,7 @@
 .el .IP "\f(CWc9x\fR" 4
 .IX Item "c9x"
 .PD
-The revised \s-1ISO\s0 C standard, published in December 1999.  Before
+The revised \s-1ISO C\s0 standard, published in December 1999.  Before
 publication, this was known as C9X.
 .ie n .IP """iso9899:2011""" 4
 .el .IP "\f(CWiso9899:2011\fR" 4
@@ -565,7 +566,7 @@
 .el .IP "\f(CWc1x\fR" 4
 .IX Item "c1x"
 .PD
-The revised \s-1ISO\s0 C standard, published in December 2011.  Before
+The revised \s-1ISO C\s0 standard, published in December 2011.  Before
 publication, this was known as C1X.
 .ie n .IP """gnu90""" 4
 .el .IP "\f(CWgnu90\fR" 4
@@ -597,7 +598,7 @@
 .ie n .IP """c++98""" 4
 .el .IP "\f(CWc++98\fR" 4
 .IX Item "c++98"
-The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
+The 1998 \s-1ISO \*(C+\s0 standard plus amendments.
 .ie n .IP """gnu++98""" 4
 .el .IP "\f(CWgnu++98\fR" 4
 .IX Item "gnu++98"
@@ -726,7 +727,7 @@
 .IP "\fB\-fextended\-identifiers\fR" 4
 .IX Item "-fextended-identifiers"
 Accept universal character names in identifiers.  This option is
-experimental; in a future version of \s-1GCC\s0, it will be enabled by
+experimental; in a future version of \s-1GCC,\s0 it will be enabled by
 default for C99 and \*(C+.
 .IP "\fB\-fno\-canonical\-system\-headers\fR" 4
 .IX Item "-fno-canonical-system-headers"
@@ -753,7 +754,7 @@
 ignored.  The default is 8.
 .IP "\fB\-fdebug\-cpp\fR" 4
 .IX Item "-fdebug-cpp"
-This option is only useful for debugging \s-1GCC\s0.  When used with
+This option is only useful for debugging \s-1GCC. \s0 When used with
 \&\fB\-E\fR, dumps debugging information about location maps.  Every
 token in the output is preceded by the dump of the map its location
 belongs to.  The dump of the map holding the location of a token would
@@ -786,12 +787,12 @@
 .IP "\fB\-fexec\-charset=\fR\fIcharset\fR" 4
 .IX Item "-fexec-charset=charset"
 Set the execution character set, used for string and character
-constants.  The default is \s-1UTF\-8\s0.  \fIcharset\fR can be any encoding
+constants.  The default is \s-1UTF\-8.  \s0\fIcharset\fR can be any encoding
 supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
 .IP "\fB\-fwide\-exec\-charset=\fR\fIcharset\fR" 4
 .IX Item "-fwide-exec-charset=charset"
 Set the wide execution character set, used for wide string and
-character constants.  The default is \s-1UTF\-32\s0 or \s-1UTF\-16\s0, whichever
+character constants.  The default is \s-1UTF\-32\s0 or \s-1UTF\-16,\s0 whichever
 corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  As with
 \&\fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
 by the system's \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
@@ -799,9 +800,9 @@
 .IP "\fB\-finput\-charset=\fR\fIcharset\fR" 4
 .IX Item "-finput-charset=charset"
 Set the input character set, used for translation from the character
-set of the input file to the source character set used by \s-1GCC\s0.  If the
+set of the input file to the source character set used by \s-1GCC. \s0 If the
 locale does not specify, or \s-1GCC\s0 cannot get this information from the
-locale, the default is \s-1UTF\-8\s0.  This can be overridden by either the locale
+locale, the default is \s-1UTF\-8. \s0 This can be overridden by either the locale
 or this command line option.  Currently the command line option takes
 precedence if there's a conflict.  \fIcharset\fR can be any encoding
 supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
@@ -838,7 +839,7 @@
 .IX Item "-dCHARS"
 \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
 and must not be preceded by a space.  Other characters are interpreted
-by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so
+by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
 are silently ignored.  If you specify characters whose behavior
 conflicts, the result is undefined.
 .RS 4
@@ -914,7 +915,7 @@
 .IP "\fB\-traditional\-cpp\fR" 4
 .IX Item "-traditional-cpp"
 Try to imitate the behavior of old-fashioned C preprocessors, as
-opposed to \s-1ISO\s0 C preprocessors.
+opposed to \s-1ISO C\s0 preprocessors.
 .IP "\fB\-trigraphs\fR" 4
 .IX Item "-trigraphs"
 Process trigraph sequences.
@@ -932,7 +933,7 @@
 preprocessing anything.
 .IP "\fB\-v\fR" 4
 .IX Item "-v"
-Verbose mode.  Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning of
+Verbose mode.  Print out \s-1GNU CPP\s0's version number at the beginning of
 execution, and report the final form of the include path.
 .IP "\fB\-H\fR" 4
 .IX Item "-H"
@@ -947,7 +948,7 @@
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 .PD
-Print out \s-1GNU\s0 \s-1CPP\s0's version number.  With one dash, proceed to
+Print out \s-1GNU CPP\s0's version number.  With one dash, proceed to
 preprocess as normal.  With two dashes, exit immediately.
 .SH "ENVIRONMENT"
 .IX Header "ENVIRONMENT"
@@ -959,7 +960,7 @@
 \&\fB\-I\fR, and control dependency output with options like
 \&\fB\-M\fR.  These take precedence over
 environment variables, which in turn take precedence over the
-configuration of \s-1GCC\s0.
+configuration of \s-1GCC.\s0
 .IP "\fB\s-1CPATH\s0\fR" 4
 .IX Item "CPATH"
 .PD 0
diff --git a/share/man/man7/gfdl.7 b/share/man/man7/gfdl.7
index 9788f70..d12bf50 100644
--- a/share/man/man7/gfdl.7
+++ b/share/man/man7/gfdl.7
@@ -1 +1,645 @@
-timestamp
+.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "GFDL 7"
+.TH GFDL 7 "2014-05-22" "gcc-4.8.3" "GNU"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+gfdl \- GNU Free Documentation License
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+.Sh "\s-1GNU\s0 Free Documentation License"
+.IX Subsection "GNU Free Documentation License"
+.Sh "Version 1.3, 3 November 2008"
+.IX Subsection "Version 1.3, 3 November 2008"
+.Vb 2
+\&        Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+\&        E<lt>B<http://fsf.org/>E<gt>
+\&        
+\&        Everyone is permitted to copy and distribute verbatim copies
+\&        of this license document, but changing it is not allowed.
+.Ve
+.IP "0." 4
+.IX Item "0."
+\&\s-1PREAMBLE\s0
+.Sp
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document \fIfree\fR in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+.Sp
+This License is a kind of \*(L"copyleft\*(R", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the \s-1GNU\s0 General Public License, which is a copyleft
+license designed for free software.
+.Sp
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+.IP "1." 4
+.IX Item "1."
+\&\s-1APPLICABILITY\s0 \s-1AND\s0 \s-1DEFINITIONS\s0
+.Sp
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The \*(L"Document\*(R", below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as \*(L"you\*(R".  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+.Sp
+A \*(L"Modified Version\*(R" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+.Sp
+A \*(L"Secondary Section\*(R" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+.Sp
+The \*(L"Invariant Sections\*(R" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+.Sp
+The \*(L"Cover Texts\*(R" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+.Sp
+A \*(L"Transparent\*(R" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not \*(L"Transparent\*(R" is called \*(L"Opaque\*(R".
+.Sp
+Examples of suitable formats for Transparent copies include plain
+\&\s-1ASCII\s0 without markup, Texinfo input format, LaTeX input
+format, \s-1SGML\s0 or \s-1XML\s0 using a publicly available
+\&\s-1DTD\s0, and standard-conforming simple \s-1HTML\s0,
+PostScript or \s-1PDF\s0 designed for human modification.  Examples
+of transparent image formats include \s-1PNG\s0, \s-1XCF\s0 and
+\&\s-1JPG\s0.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, \s-1SGML\s0 or
+\&\s-1XML\s0 for which the \s-1DTD\s0 and/or processing tools are
+not generally available, and the machine-generated \s-1HTML\s0,
+PostScript or \s-1PDF\s0 produced by some word processors for
+output purposes only.
+.Sp
+The \*(L"Title Page\*(R" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, \*(L"Title Page\*(R" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+.Sp
+The \*(L"publisher\*(R" means any person or entity that distributes copies
+of the Document to the public.
+.Sp
+A section \*(L"Entitled \s-1XYZ\s0\*(R" means a named subunit of the Document whose
+title either is precisely \s-1XYZ\s0 or contains \s-1XYZ\s0 in parentheses following
+text that translates \s-1XYZ\s0 in another language.  (Here \s-1XYZ\s0 stands for a
+specific section name mentioned below, such as \*(L"Acknowledgements\*(R",
+\&\*(L"Dedications\*(R", \*(L"Endorsements\*(R", or \*(L"History\*(R".)  To \*(L"Preserve the Title\*(R"
+of such a section when you modify the Document means that it remains a
+section \*(L"Entitled \s-1XYZ\s0\*(R" according to this definition.
+.Sp
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+.IP "2." 4
+.IX Item "2."
+\&\s-1VERBATIM\s0 \s-1COPYING\s0
+.Sp
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+.Sp
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+.IP "3." 4
+.IX Item "3."
+\&\s-1COPYING\s0 \s-1IN\s0 \s-1QUANTITY\s0
+.Sp
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+.Sp
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+.Sp
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+.Sp
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+.IP "4." 4
+.IX Item "4."
+\&\s-1MODIFICATIONS\s0
+.Sp
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+.RS 4
+.IP "A." 4
+.IX Item "A."
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+.IP "B." 4
+.IX Item "B."
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+.IP "C." 4
+.IX Item "C."
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+.IP "D." 4
+.IX Item "D."
+Preserve all the copyright notices of the Document.
+.IP "E." 4
+.IX Item "E."
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+.IP "F." 4
+.IX Item "F."
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+.IP "G." 4
+.IX Item "G."
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+.IP "H." 4
+.IX Item "H."
+Include an unaltered copy of this License.
+.IP "I." 4
+.IX Item "I."
+Preserve the section Entitled \*(L"History\*(R", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled \*(L"History\*(R" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+.IP "J." 4
+.IX Item "J."
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the \*(L"History\*(R" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+.IP "K." 4
+.IX Item "K."
+For any section Entitled \*(L"Acknowledgements\*(R" or \*(L"Dedications\*(R", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+.IP "L." 4
+.IX Item "L."
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+.IP "M." 4
+.IX Item "M."
+Delete any section Entitled \*(L"Endorsements\*(R".  Such a section
+may not be included in the Modified Version.
+.IP "N." 4
+.IX Item "N."
+Do not retitle any existing section to be Entitled \*(L"Endorsements\*(R" or
+to conflict in title with any Invariant Section.
+.IP "O." 4
+.IX Item "O."
+Preserve any Warranty Disclaimers.
+.RE
+.RS 4
+.Sp
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+.Sp
+You may add a section Entitled \*(L"Endorsements\*(R", provided it contains
+nothing but endorsements of your Modified Version by various
+parties\-\-\-for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+.Sp
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+.Sp
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+.RE
+.IP "5." 4
+.IX Item "5."
+\&\s-1COMBINING\s0 \s-1DOCUMENTS\s0
+.Sp
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+.Sp
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+.Sp
+In the combination, you must combine any sections Entitled \*(L"History\*(R"
+in the various original documents, forming one section Entitled
+\&\*(L"History\*(R"; likewise combine any sections Entitled \*(L"Acknowledgements\*(R",
+and any sections Entitled \*(L"Dedications\*(R".  You must delete all
+sections Entitled \*(L"Endorsements.\*(R"
+.IP "6." 4
+.IX Item "6."
+\&\s-1COLLECTIONS\s0 \s-1OF\s0 \s-1DOCUMENTS\s0
+.Sp
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+.Sp
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+.IP "7." 4
+.IX Item "7."
+\&\s-1AGGREGATION\s0 \s-1WITH\s0 \s-1INDEPENDENT\s0 \s-1WORKS\s0
+.Sp
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an \*(L"aggregate\*(R" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+.Sp
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+.IP "8." 4
+.IX Item "8."
+\&\s-1TRANSLATION\s0
+.Sp
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+.Sp
+If a section in the Document is Entitled \*(L"Acknowledgements\*(R",
+\&\*(L"Dedications\*(R", or \*(L"History\*(R", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+.IP "9." 4
+.IX Item "9."
+\&\s-1TERMINATION\s0
+.Sp
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+.Sp
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+.Sp
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+.Sp
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+.IP "10." 4
+.IX Item "10."
+\&\s-1FUTURE\s0 \s-1REVISIONS\s0 \s-1OF\s0 \s-1THIS\s0 \s-1LICENSE\s0
+.Sp
+The Free Software Foundation may publish new, revised versions
+of the \s-1GNU\s0 Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+<\fBhttp://www.gnu.org/copyleft/\fR>.
+.Sp
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License \*(L"or any later version\*(R" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+.IP "11." 4
+.IX Item "11."
+\&\s-1RELICENSING\s0
+.Sp
+\&\*(L"Massive Multiauthor Collaboration Site\*(R" (or \*(L"\s-1MMC\s0 Site\*(R") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+\&\*(L"Massive Multiauthor Collaboration\*(R" (or \*(L"\s-1MMC\s0\*(R") contained in the
+site means any set of copyrightable works thus published on the \s-1MMC\s0
+site.
+.Sp
+\&\*(L"CC-BY-SA\*(R" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+.Sp
+\&\*(L"Incorporate\*(R" means to publish or republish a Document, in whole or
+in part, as part of another Document.
+.Sp
+An \s-1MMC\s0 is \*(L"eligible for relicensing\*(R" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this \s-1MMC\s0, and subsequently incorporated in whole
+or in part into the \s-1MMC\s0, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+.Sp
+The operator of an \s-1MMC\s0 Site may republish an \s-1MMC\s0 contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the \s-1MMC\s0 is eligible for relicensing.
+.Sh "\s-1ADDENDUM:\s0 How to use this License for your documents"
+.IX Subsection "ADDENDUM: How to use this License for your documents"
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+.PP
+.Vb 7
+\&          Copyright (C)  <year>  <your name>.
+\&          Permission is granted to copy, distribute and/or modify this document
+\&          under the terms of the GNU Free Documentation License, Version 1.3
+\&          or any later version published by the Free Software Foundation;
+\&          with no Invariant Sections, no Front\-Cover Texts, and no Back\-Cover
+\&          Texts.  A copy of the license is included in the section entitled "GNU
+\&          Free Documentation License".
+.Ve
+.PP
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the \*(L"with...Texts.\*(R" line with this:
+.PP
+.Vb 3
+\&            with the Invariant Sections being <list their titles>, with
+\&            the Front\-Cover Texts being <list>, and with the Back\-Cover Texts
+\&            being <list>.
+.Ve
+.PP
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+.PP
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the \s-1GNU\s0 General Public License,
+to permit their use in free software.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIgpl\fR\|(7), \fIfsf\-funding\fR\|(7).
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<\fBhttp://fsf.org/\fR>
+.PP
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
diff --git a/x86_64-w64-mingw32/bin/ar b/x86_64-w64-mingw32/bin/ar
index 711a995..44b299c 100755
--- a/x86_64-w64-mingw32/bin/ar
+++ b/x86_64-w64-mingw32/bin/ar
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/as b/x86_64-w64-mingw32/bin/as
index 5a09484..e05e3d4 100755
--- a/x86_64-w64-mingw32/bin/as
+++ b/x86_64-w64-mingw32/bin/as
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/dlltool b/x86_64-w64-mingw32/bin/dlltool
index a15b045..346979d 100755
--- a/x86_64-w64-mingw32/bin/dlltool
+++ b/x86_64-w64-mingw32/bin/dlltool
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/ld b/x86_64-w64-mingw32/bin/ld
index 81aaff1..de6bc0b 100755
--- a/x86_64-w64-mingw32/bin/ld
+++ b/x86_64-w64-mingw32/bin/ld
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/ld.bfd b/x86_64-w64-mingw32/bin/ld.bfd
index 81aaff1..de6bc0b 100755
--- a/x86_64-w64-mingw32/bin/ld.bfd
+++ b/x86_64-w64-mingw32/bin/ld.bfd
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/libwinpthread-1.dll b/x86_64-w64-mingw32/bin/libwinpthread-1.dll
index e84bdfe..b2fd346 100755
--- a/x86_64-w64-mingw32/bin/libwinpthread-1.dll
+++ b/x86_64-w64-mingw32/bin/libwinpthread-1.dll
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/nm b/x86_64-w64-mingw32/bin/nm
index 904d0a6..596472b 100755
--- a/x86_64-w64-mingw32/bin/nm
+++ b/x86_64-w64-mingw32/bin/nm
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/objcopy b/x86_64-w64-mingw32/bin/objcopy
index 6192640..66218f9 100755
--- a/x86_64-w64-mingw32/bin/objcopy
+++ b/x86_64-w64-mingw32/bin/objcopy
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/objdump b/x86_64-w64-mingw32/bin/objdump
index 70f3eff..1648cac 100755
--- a/x86_64-w64-mingw32/bin/objdump
+++ b/x86_64-w64-mingw32/bin/objdump
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/ranlib b/x86_64-w64-mingw32/bin/ranlib
index 5c2ca56..620d213 100755
--- a/x86_64-w64-mingw32/bin/ranlib
+++ b/x86_64-w64-mingw32/bin/ranlib
Binary files differ
diff --git a/x86_64-w64-mingw32/bin/strip b/x86_64-w64-mingw32/bin/strip
index d70a671..5edbc2b 100755
--- a/x86_64-w64-mingw32/bin/strip
+++ b/x86_64-w64-mingw32/bin/strip
Binary files differ
diff --git a/x86_64-w64-mingw32/include/_mingw_mac.h b/x86_64-w64-mingw32/include/_mingw_mac.h
index 6f73a03..843aebd 100644
--- a/x86_64-w64-mingw32/include/_mingw_mac.h
+++ b/x86_64-w64-mingw32/include/_mingw_mac.h
@@ -11,7 +11,7 @@
 #define __MINGW64_STRINGIFY(x) \
   __STRINGIFY(x)
 
-#define __MINGW64_VERSION_MAJOR 4
+#define __MINGW64_VERSION_MAJOR 5
 #define __MINGW64_VERSION_MINOR 0
 
 /* This macro holds an monotonic increasing value, which indicates
@@ -27,7 +27,7 @@
   "." \
   __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR)
 
-#define __MINGW64_VERSION_STATE "stable"
+#define __MINGW64_VERSION_STATE "alpha"
 
 /* mingw.org's version macros: these make gcc to define
    MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
@@ -36,48 +36,9 @@
 #define __MINGW32_MAJOR_VERSION 3
 #define __MINGW32_MINOR_VERSION 11
 
-#ifdef _WIN64
-   /* MS does not prefix symbols by underscores for 64-bit.  */
-#  ifndef __MINGW_USE_UNDERSCORE_PREFIX
-     /* As we have to support older gcc version, which are using underscores
-      as symbol prefix for x64, we have to check here for the user label
-      prefix defined by gcc. */
-#    ifdef __USER_LABEL_PREFIX__
-#      pragma push_macro ("_")
-#      undef _
-#      define _ 1
-#      if (__USER_LABEL_PREFIX__ + 0) != 0
-#        define __MINGW_USE_UNDERSCORE_PREFIX 1
-#      else
-#        define __MINGW_USE_UNDERSCORE_PREFIX 0
-#      endif
-#      undef _
-#      pragma pop_macro ("_")
-#    else /* ! __USER_LABEL_PREFIX__ */
-#      define __MINGW_USE_UNDERSCORE_PREFIX 0
-#    endif /* __USER_LABEL_PREFIX__ */
-#  endif
-#else /* ! ifdef _WIN64 */
-   /* For 32-bits we have always to prefix by underscore.  */
-#  undef __MINGW_USE_UNDERSCORE_PREFIX
-#  define __MINGW_USE_UNDERSCORE_PREFIX 1
-#endif /* ifdef _WIN64 */
-
-#if __MINGW_USE_UNDERSCORE_PREFIX == 0
-#  define __MINGW_IMP_SYMBOL(sym) __imp_##sym
-#  define __MINGW_IMP_LSYMBOL(sym) __imp_##sym
-#  define __MINGW_USYMBOL(sym) sym
-#  define __MINGW_LSYMBOL(sym) _##sym
-#else /* ! if __MINGW_USE_UNDERSCORE_PREFIX == 0 */
-#  define __MINGW_IMP_SYMBOL(sym) _imp__##sym
-#  define __MINGW_IMP_LSYMBOL(sym) __imp__##sym
-#  define __MINGW_USYMBOL(sym) _##sym
-#  define __MINGW_LSYMBOL(sym) sym
-#endif /* if __MINGW_USE_UNDERSCORE_PREFIX == 0 */
-
 /* Set VC specific compiler target macros.  */
 #if defined(__x86_64) && defined(_X86_)
-#  undef _X86_	/* _X86_ is not for __x86_64 */
+#  undef _X86_  /* _X86_ is not for __x86_64 */
 #endif
 
 #if defined(_X86_) && !defined(_M_IX86) && !defined(_M_IA64) \
@@ -104,13 +65,58 @@
 #  define _M_IA64 100
 #endif
 
-#if defined(__arm__) && !defined(_M_ARM)
+#if defined(__arm__) && !defined(_M_ARM) && !defined(_M_ARMT) \
+   && !defined(_M_THUMB)
 #  define _M_ARM 100
+#  define _M_ARMT 100
+#  define _M_THUMB 100
 #  ifndef _ARM_
 #    define _ARM_ 1
 #  endif
+#  ifndef _M_ARM_NT
+#    define _M_ARM_NT 1
+#  endif
 #endif
 
+#ifndef _X86_
+   /* MS does not prefix symbols by underscores for 64-bit.  */
+#  ifndef __MINGW_USE_UNDERSCORE_PREFIX
+     /* As we have to support older gcc version, which are using underscores
+      as symbol prefix for x64, we have to check here for the user label
+      prefix defined by gcc. */
+#    ifdef __USER_LABEL_PREFIX__
+#      pragma push_macro ("_")
+#      undef _
+#      define _ 1
+#      if (__USER_LABEL_PREFIX__ + 0) != 0
+#        define __MINGW_USE_UNDERSCORE_PREFIX 1
+#      else
+#        define __MINGW_USE_UNDERSCORE_PREFIX 0
+#      endif
+#      undef _
+#      pragma pop_macro ("_")
+#    else /* ! __USER_LABEL_PREFIX__ */
+#      define __MINGW_USE_UNDERSCORE_PREFIX 0
+#    endif /* __USER_LABEL_PREFIX__ */
+#  endif
+#else /* ! ifndef _X86_ */
+   /* For x86 we have always to prefix by underscore.  */
+#  undef __MINGW_USE_UNDERSCORE_PREFIX
+#  define __MINGW_USE_UNDERSCORE_PREFIX 1
+#endif /* ifndef _X86_ */
+
+#if __MINGW_USE_UNDERSCORE_PREFIX == 0
+#  define __MINGW_IMP_SYMBOL(sym) __imp_##sym
+#  define __MINGW_IMP_LSYMBOL(sym) __imp_##sym
+#  define __MINGW_USYMBOL(sym) sym
+#  define __MINGW_LSYMBOL(sym) _##sym
+#else /* ! if __MINGW_USE_UNDERSCORE_PREFIX == 0 */
+#  define __MINGW_IMP_SYMBOL(sym) _imp__##sym
+#  define __MINGW_IMP_LSYMBOL(sym) __imp__##sym
+#  define __MINGW_USYMBOL(sym) _##sym
+#  define __MINGW_LSYMBOL(sym) sym
+#endif /* if __MINGW_USE_UNDERSCORE_PREFIX == 0 */
+
 #ifndef __PTRDIFF_TYPE__
 #  ifdef _WIN64
 #    define __PTRDIFF_TYPE__ long long int
diff --git a/x86_64-w64-mingw32/include/activscp.h b/x86_64-w64-mingw32/include/activscp.h
index 847290e..cf93d7a 100644
--- a/x86_64-w64-mingw32/include/activscp.h
+++ b/x86_64-w64-mingw32/include/activscp.h
@@ -175,35 +175,9 @@
 DEFINE_GUID(CATID_ActiveScript, 0xf0b7a1a1, 0x9847, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
 DEFINE_GUID(CATID_ActiveScriptParse, 0xf0b7a1a2, 0x9847, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
 DEFINE_GUID(CATID_ActiveScriptEncode, 0xf0b7a1a3, 0x9847, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScript, 0xbb1a2ae1, 0xa4f9, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptParse32, 0xbb1a2ae2, 0xa4f9, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptParse64, 0xc7ef7658, 0xe1ee, 0x480e, 0x97, 0xea, 0xd5, 0x2c, 0xb4, 0xd7, 0x6d, 0x17);
-DEFINE_GUID(IID_IActiveScriptEncode, 0xbb1a2ae3, 0xa4f9, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptHostEncode, 0xbee9b76e, 0xcfe3, 0x11d1, 0xb7, 0x47, 0x00, 0xc0, 0x4f, 0xc2, 0xb0, 0x85);
-DEFINE_GUID(IID_IActiveScriptParseProcedureOld32, 0x1cff0050, 0x6fdd, 0x11d0, 0x93, 0x28, 0x00, 0xa0, 0xc9, 0x0d, 0xca, 0xa9);
-DEFINE_GUID(IID_IActiveScriptParseProcedureOld64, 0x21f57128, 0x08c9, 0x4638, 0xba, 0x12, 0x22, 0xd1, 0x5d, 0x88, 0xdc, 0x5c);
-DEFINE_GUID(IID_IActiveScriptParseProcedure32, 0xaa5b6a80, 0xb834, 0x11d0, 0x93, 0x2f, 0x00, 0xa0, 0xc9, 0x0d, 0xca, 0xa9);
-DEFINE_GUID(IID_IActiveScriptParseProcedure64, 0xc64713b6, 0xe029, 0x4cc5, 0x92, 0x00, 0x43, 0x8b, 0x72, 0x89, 0x0b, 0x6a);
-DEFINE_GUID(IID_IActiveScriptParseProcedure2_32, 0x71ee5b20, 0xfb04, 0x11d1, 0xb3, 0xa8, 0x00, 0xa0, 0xc9, 0x11, 0xe8, 0xb2);
-DEFINE_GUID(IID_IActiveScriptParseProcedure2_64, 0xfe7c4271, 0x210c, 0x448d, 0x9f, 0x54, 0x76, 0xda, 0xb7, 0x04, 0x7b, 0x28);
-DEFINE_GUID(IID_IActiveScriptSite, 0xdb01a1e3, 0xa42b, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptSiteTraceInfo, 0x4b7272ae, 0x1955, 0x4bfe, 0x98, 0xb0, 0x78, 0x6, 0x21, 0x88, 0x85, 0x69);
-DEFINE_GUID(IID_IActiveScriptSiteWindow, 0xd10f6761, 0x83e9, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptSiteInterruptPoll, 0x539698a0, 0xcdca, 0x11cf, 0xa5, 0xeb, 0x00, 0xaa, 0x00, 0x47, 0xa0, 0x63);
-DEFINE_GUID(IID_IActiveScriptSiteUIControl, 0xaedae97e, 0xd7ee, 0x4796, 0xb9, 0x60, 0x7f, 0x9, 0x2a, 0xe8, 0x44, 0xab);
-DEFINE_GUID(IID_IActiveScriptError,   0xeae1ba61, 0xa4ed, 0x11cf, 0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
-DEFINE_GUID(IID_IActiveScriptError64, 0xb21fb2a1, 0x5b8f, 0x4963, 0x8c, 0x21, 0x21, 0x45, 0x0f, 0x84, 0xed, 0x7f);
-DEFINE_GUID(IID_IBindEventHandler, 0x63cdbcb0, 0xc1b1, 0x11d0, 0x93, 0x36, 0x00, 0xa0, 0xc9, 0x0d, 0xca, 0xa9);
-DEFINE_GUID(IID_IActiveScriptStats, 0xb8da6310, 0xe19b, 0x11d0, 0x93, 0x3c, 0x00, 0xa0, 0xc9, 0x0d, 0xca, 0xa9);
-DEFINE_GUID(IID_IActiveScriptProperty, 0x4954E0D0, 0xFBC7, 0x11D1, 0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC);
-DEFINE_GUID(IID_ITridentEventSink, 0x1dc9ca50, 0x6ef, 0x11d2, 0x84, 0x15, 0x00, 0x60, 0x08, 0xc3, 0xfb, 0xfc);
-DEFINE_GUID(IID_IActiveScriptGarbageCollector, 0x6aa2c4a0, 0x2b53, 0x11d4, 0xa2, 0xa0, 0x00, 0x10, 0x4b, 0xd3, 0x50, 0x90);
-DEFINE_GUID(IID_IActiveScriptSIPInfo, 0x764651d0, 0x38de, 0x11d4, 0xa2, 0xa3, 0x00, 0x10, 0x4b, 0xd3, 0x50, 0x90);
-DEFINE_GUID(IID_IActiveScriptTraceInfo, 0xC35456E7, 0xBEBF, 0x4a1b, 0x86, 0xA9, 0x24, 0xD5, 0x6B, 0xE8, 0xB3, 0x69);
 DEFINE_GUID(OID_VBSSIP, 0x1629f04e, 0x2799, 0x4db5, 0x8f, 0xe5, 0xac, 0xe1, 0x0f, 0x17, 0xeb, 0xab);
 DEFINE_GUID(OID_JSSIP,  0x6c9e010, 0x38ce, 0x11d4, 0xa2, 0xa3, 0x00, 0x10, 0x4b, 0xd3, 0x50, 0x90);
 DEFINE_GUID(OID_WSFSIP, 0x1a610570, 0x38ce, 0x11d4, 0xa2, 0xa3, 0x00, 0x10, 0x4b, 0xd3, 0x50, 0x90);
-DEFINE_GUID(IID_IActiveScriptStringCompare, 0x58562769, 0xED52, 0x42f7, 0x84, 0x03, 0x49, 0x63, 0x51, 0x4E, 0x1F, 0x11);
 #endif
 
 #define SCRIPTITEM_ISVISIBLE 0x00000002
diff --git a/x86_64-w64-mingw32/include/adoint_backcompat.h b/x86_64-w64-mingw32/include/adoint_backcompat.h
index bbc3c42..f816cb6 100644
--- a/x86_64-w64-mingw32/include/adoint_backcompat.h
+++ b/x86_64-w64-mingw32/include/adoint_backcompat.h
@@ -461,11 +461,11 @@
   } ConnectModeEnum;
   typedef DECLSPEC_UUID ("00000570-0000-0010-8000-00AA006D2EA4")
   enum RecordCreateOptionsEnum { adCreateCollection = 0x2000,
-    adCreateStructDoc = 0x80000000,
-    adCreateNonCollection = 0,
-    adOpenIfExists = 0x2000000,
-    adCreateOverwrite = 0x4000000,
-    adFailIfNotExists = -1
+    adCreateStructDoc = (int) 0x80000000,
+    adCreateNonCollection = (int) 0,
+    adOpenIfExists = (int) 0x2000000,
+    adCreateOverwrite = (int) 0x4000000,
+    adFailIfNotExists = (int) -1
   } RecordCreateOptionsEnum;
   typedef DECLSPEC_UUID ("00000571-0000-0010-8000-00AA006D2EA4")
   enum RecordOpenOptionsEnum { adOpenRecordUnspecified = -1,
diff --git a/x86_64-w64-mingw32/include/atsmedia.h b/x86_64-w64-mingw32/include/atsmedia.h
index 1284aaf..d6b0651 100644
--- a/x86_64-w64-mingw32/include/atsmedia.h
+++ b/x86_64-w64-mingw32/include/atsmedia.h
@@ -18,7 +18,7 @@
 
 #include <winapifamily.h>
 
-#if WINAPI_FAMILY_PARTION(WINAPI_PARTITION_DESKTOP)
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 
 #pragma once
 
diff --git a/x86_64-w64-mingw32/include/axextendenums.h b/x86_64-w64-mingw32/include/axextendenums.h
index c4f9205..7ea2ae3 100644
--- a/x86_64-w64-mingw32/include/axextendenums.h
+++ b/x86_64-w64-mingw32/include/axextendenums.h
@@ -40,7 +40,11 @@
   AnalogVideoMask_MCE_SECAM = AnalogVideo_SECAM_B | AnalogVideo_SECAM_D | AnalogVideo_SECAM_G | AnalogVideo_SECAM_H | AnalogVideo_SECAM_K | AnalogVideo_SECAM_K1 | AnalogVideo_SECAM_L | AnalogVideo_SECAM_L1
 } AnalogVideoStandard;
 
-typedef enum tagTunerInputType {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+enum tagTunerInputType {
   TunerInputCable,
   TunerInputAntenna
 } TunerInputType;
diff --git a/x86_64-w64-mingw32/include/bdaiface.h b/x86_64-w64-mingw32/include/bdaiface.h
index 6df4530..06ab703 100644
--- a/x86_64-w64-mingw32/include/bdaiface.h
+++ b/x86_64-w64-mingw32/include/bdaiface.h
@@ -1,16 +1,131 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef __INC_BDAIFACE__
-#define __INC_BDAIFACE__
+/*** Autogenerated by WIDL 1.6 from include/bdaiface.idl - Do not edit ***/
 
-#include <objbase.h>
-#include <bdatypes.h>
-#include <dshow.h>
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
 
-#if (_WIN32_WINNT >= 0x0600)
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __bdaiface_h__
+#define __bdaiface_h__
+
+/* Forward declarations */
+
+#ifndef __IBDA_NetworkProvider_FWD_DEFINED__
+#define __IBDA_NetworkProvider_FWD_DEFINED__
+typedef interface IBDA_NetworkProvider IBDA_NetworkProvider;
+#endif
+
+#ifndef __IBDA_EthernetFilter_FWD_DEFINED__
+#define __IBDA_EthernetFilter_FWD_DEFINED__
+typedef interface IBDA_EthernetFilter IBDA_EthernetFilter;
+#endif
+
+#ifndef __IBDA_IPV4Filter_FWD_DEFINED__
+#define __IBDA_IPV4Filter_FWD_DEFINED__
+typedef interface IBDA_IPV4Filter IBDA_IPV4Filter;
+#endif
+
+#ifndef __IBDA_IPV6Filter_FWD_DEFINED__
+#define __IBDA_IPV6Filter_FWD_DEFINED__
+typedef interface IBDA_IPV6Filter IBDA_IPV6Filter;
+#endif
+
+#ifndef __IBDA_DeviceControl_FWD_DEFINED__
+#define __IBDA_DeviceControl_FWD_DEFINED__
+typedef interface IBDA_DeviceControl IBDA_DeviceControl;
+#endif
+
+#ifndef __IBDA_PinControl_FWD_DEFINED__
+#define __IBDA_PinControl_FWD_DEFINED__
+typedef interface IBDA_PinControl IBDA_PinControl;
+#endif
+
+#ifndef __IBDA_SignalProperties_FWD_DEFINED__
+#define __IBDA_SignalProperties_FWD_DEFINED__
+typedef interface IBDA_SignalProperties IBDA_SignalProperties;
+#endif
+
+#ifndef __IBDA_SignalStatistics_FWD_DEFINED__
+#define __IBDA_SignalStatistics_FWD_DEFINED__
+typedef interface IBDA_SignalStatistics IBDA_SignalStatistics;
+#endif
+
+#ifndef __IBDA_Topology_FWD_DEFINED__
+#define __IBDA_Topology_FWD_DEFINED__
+typedef interface IBDA_Topology IBDA_Topology;
+#endif
+
+#ifndef __IBDA_VoidTransform_FWD_DEFINED__
+#define __IBDA_VoidTransform_FWD_DEFINED__
+typedef interface IBDA_VoidTransform IBDA_VoidTransform;
+#endif
+
+#ifndef __IBDA_NullTransform_FWD_DEFINED__
+#define __IBDA_NullTransform_FWD_DEFINED__
+typedef interface IBDA_NullTransform IBDA_NullTransform;
+#endif
+
+#ifndef __IBDA_FrequencyFilter_FWD_DEFINED__
+#define __IBDA_FrequencyFilter_FWD_DEFINED__
+typedef interface IBDA_FrequencyFilter IBDA_FrequencyFilter;
+#endif
+
+#ifndef __IBDA_LNBInfo_FWD_DEFINED__
+#define __IBDA_LNBInfo_FWD_DEFINED__
+typedef interface IBDA_LNBInfo IBDA_LNBInfo;
+#endif
+
+#ifndef __IBDA_DiseqCommand_FWD_DEFINED__
+#define __IBDA_DiseqCommand_FWD_DEFINED__
+typedef interface IBDA_DiseqCommand IBDA_DiseqCommand;
+#endif
+
+#ifndef __IBDA_AutoDemodulate_FWD_DEFINED__
+#define __IBDA_AutoDemodulate_FWD_DEFINED__
+typedef interface IBDA_AutoDemodulate IBDA_AutoDemodulate;
+#endif
+
+#ifndef __IBDA_AutoDemodulateEx_FWD_DEFINED__
+#define __IBDA_AutoDemodulateEx_FWD_DEFINED__
+typedef interface IBDA_AutoDemodulateEx IBDA_AutoDemodulateEx;
+#endif
+
+#ifndef __IBDA_DigitalDemodulator_FWD_DEFINED__
+#define __IBDA_DigitalDemodulator_FWD_DEFINED__
+typedef interface IBDA_DigitalDemodulator IBDA_DigitalDemodulator;
+#endif
+
+#ifndef __IBDA_DigitalDemodulator2_FWD_DEFINED__
+#define __IBDA_DigitalDemodulator2_FWD_DEFINED__
+typedef interface IBDA_DigitalDemodulator2 IBDA_DigitalDemodulator2;
+#endif
+
+#ifndef __IBDA_DigitalDemodulator3_FWD_DEFINED__
+#define __IBDA_DigitalDemodulator3_FWD_DEFINED__
+typedef interface IBDA_DigitalDemodulator3 IBDA_DigitalDemodulator3;
+#endif
+
+#ifndef __ICCSubStreamFiltering_FWD_DEFINED__
+#define __ICCSubStreamFiltering_FWD_DEFINED__
+typedef interface ICCSubStreamFiltering ICCSubStreamFiltering;
+#endif
+
+#ifndef __IBDA_IPSinkControl_FWD_DEFINED__
+#define __IBDA_IPSinkControl_FWD_DEFINED__
+typedef interface IBDA_IPSinkControl IBDA_IPSinkControl;
+#endif
+
+#ifndef __IBDA_IPSinkInfo_FWD_DEFINED__
+#define __IBDA_IPSinkInfo_FWD_DEFINED__
+typedef interface IBDA_IPSinkInfo IBDA_IPSinkInfo;
+#endif
 
 #ifndef __IEnumPIDMap_FWD_DEFINED__
 #define __IEnumPIDMap_FWD_DEFINED__
@@ -22,497 +137,8106 @@
 typedef interface IMPEG2PIDMap IMPEG2PIDMap;
 #endif
 
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IEnumPIDMap,0xafb6c2a2,0x2c41,0x11d3,0x8a,0x60,0x00,0x00,0xf8,0x1e,0x0e,0x4a);
+#ifndef __IFrequencyMap_FWD_DEFINED__
+#define __IFrequencyMap_FWD_DEFINED__
+typedef interface IFrequencyMap IFrequencyMap;
 #endif
 
-#undef  INTERFACE
-#define INTERFACE IEnumPIDMap
-DECLARE_INTERFACE_(IEnumPIDMap,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /* IEnumPIDMap methods */
-    STDMETHOD_(HRESULT,Next)(THIS_ ULONG req, PID_MAP *map, ULONG count) PURE;
-    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG rec) PURE;
-    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
-    STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPIDMap **pIEnumPIDMap) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IEnumPIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IEnumPIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IEnumPIDMap_Release(This) (This)->lpVtbl->Release(This)
-#define IEnumPIDMap_Next(This,req,map,count) (This)->lpVtbl->Next(This,req,map,count)
-#define IEnumPIDMap_Skip(This,rec) (This)->lpVtbl->Skip(This,rec)
-#define IEnumPIDMap_Reset(This) (This)->lpVtbl->Reset(This)
-#define IEnumPIDMap_Clone(This,pIEnumPIDMap) (This)->lpVtbl->Clone(This,pIEnumPIDMap)
-#endif /*COBJMACROS*/
-
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMPEG2PIDMap,0xafb6c2a1,0x2c41,0x11d3,0x8a,0x60,0x00,0x00,0xf8,0x1e,0x0e,0x4a);
+#ifndef __IBDA_EasMessage_FWD_DEFINED__
+#define __IBDA_EasMessage_FWD_DEFINED__
+typedef interface IBDA_EasMessage IBDA_EasMessage;
 #endif
 
-#undef  INTERFACE
-#define INTERFACE IMPEG2PIDMap
-DECLARE_INTERFACE_(IMPEG2PIDMap,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IMPEG2PIDMap methods */
-    STDMETHOD_(HRESULT,MapPID)(THIS_ ULONG numPid,ULONG *pPid,MEDIA_SAMPLE_CONTENT MediaSampleContent) PURE;
-    STDMETHOD_(HRESULT,UnmapPID)(THIS_ ULONG numPid,ULONG *pPid) PURE;
-    STDMETHOD_(HRESULT,EnumPIDMap)(THIS_ IEnumPIDMap **pIEnumPIDMap) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IMPEG2PIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IMPEG2PIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IMPEG2PIDMap_Release(This) (This)->lpVtbl->Release(This)
-#define IMPEG2PIDMap_MapPID(This,numPid,pPid,MediaSampleContent) (This)->lpVtbl->MapPID(This,numPid,pPid,MediaSampleContent)
-#define IMPEG2PIDMap_UnmapPID(This,numPid,pPid) (This)->lpVtbl->UnmapPID(This,numPid,pPid)
-#define IMPEG2PIDMap_EnumPIDMap(This,pIEnumPIDMap) (This)->lpVtbl->EnumPIDMap(This,pIEnumPIDMap)
-#endif /*COBJMACROS*/
-
-
+#ifndef __IBDA_TransportStreamInfo_FWD_DEFINED__
+#define __IBDA_TransportStreamInfo_FWD_DEFINED__
+typedef interface IBDA_TransportStreamInfo IBDA_TransportStreamInfo;
 #endif
-#if (_WIN32_WINNT >= 0x0601)
 
-typedef enum ApplicationTypeType {
-  SCTE28_ConditionalAccess              = 0,
-  SCTE28_POD_Host_Binding_Information,
-  SCTE28_IPService,
-  SCTE28_NetworkInterface_SCTE55_2,
-  SCTE28_NetworkInterface_SCTE55_1,
-  SCTE28_CopyProtection,
-  SCTE28_Diagnostic,
-  SCTE28_Undesignated,
-  SCTE28_Reserved 
-} ApplicationTypeType;
+#ifndef __IBDA_ConditionalAccess_FWD_DEFINED__
+#define __IBDA_ConditionalAccess_FWD_DEFINED__
+typedef interface IBDA_ConditionalAccess IBDA_ConditionalAccess;
+#endif
 
-typedef enum BDA_DrmPairingError {
-  BDA_DrmPairing_Succeeded            = 0,
-  BDA_DrmPairing_HardwareFailure,
-  BDA_DrmPairing_NeedRevocationData,
-  BDA_DrmPairing_NeedIndiv,
-  BDA_DrmPairing_Other,
-  BDA_DrmPairing_DrmInitFailed,
-  BDA_DrmPairing_DrmNotPaired,
-  BDA_DrmPairing_DrmRePairSoon 
-} BDA_DrmPairingError;
+#ifndef __IBDA_DiagnosticProperties_FWD_DEFINED__
+#define __IBDA_DiagnosticProperties_FWD_DEFINED__
+typedef interface IBDA_DiagnosticProperties IBDA_DiagnosticProperties;
+#endif
 
-typedef enum SmartCardAssociationType {
-  NotAssociated        = 0,
-  Associated,
-  AssociationUnknown 
-} SmartCardAssociationType;
+#ifndef __IBDA_DRM_FWD_DEFINED__
+#define __IBDA_DRM_FWD_DEFINED__
+typedef interface IBDA_DRM IBDA_DRM;
+#endif
 
-enum SmartCardStatusType {
-  CardInserted          = 0,
-  CardRemoved,
-  CardError,
-  CardDataChanged,
-  CardFirmwareUpgrade 
-};
-
-enum UICloseReasonType {
-  NotReady       = 0,
-  UserClosed,
-  SystemClosed,
-  DeviceClosed,
-  ErrorClosed 
-};
-
-/* Guessed from: https://acidframework.googlecode.com/svn-history/r215/trunk/Acid/Multimedia/DirectShow/BDA/BDAIface.cs */
-typedef enum _LocationCodeSchemeType {
-  SCTE_18 = 0
-} LocationCodeSchemeType;
-
-typedef struct _EALocationCodeType {
-  LocationCodeSchemeType LocationCodeScheme;
-  BYTE                   state_code;
-  BYTE                   county_subdivision;
-  WORD                   county_code;
-} EALocationCodeType;
-
-typedef struct _SmartCardApplication {
-  ApplicationTypeType ApplicationType;
-  USHORT              ApplicationVersion;
-  BSTR                pbstrApplicationName;
-  BSTR                pbstrApplicationURL;
-} SmartCardApplication;
-
-typedef struct _TransportSampleStatistics {
-  DWORD          dwWindowSize;
-  DWORD          dwNoOfRunningPackets;
-  DWORD          dwNoOfScrambledPackets;
-  DWORD          dwNoOfDiscontinuity;
-  DWORD          dwNoOfDroppedPackets;
-  REFERENCE_TIME rtCurrentStreamTime;
-  REFERENCE_TIME rtFirstPacketStreamTime;
-  REFERENCE_TIME rtLastPacketStreamTime;
-  REFERENCE_TIME rtLastDemuxInputSampleTime;
-} TRANSPORT_SAMPLE_STATISTICS;
-
-#define PBDA_Encoder_Video_MPEG2PartII 0x00000000
-#define PBDA_Encoder_Video_MPEG4Part10 0x00000001
-#define PBDA_Encoder_Video_MPEG4Part10 0x00000001
-#define PBDA_Encoder_Video_H264 0x00000001
-
-#define PBDA_Encoder_BitrateMode_Constant 0x00000001
-#define PBDA_Encoder_BitrateMode_Variable 0x00000002
-#define PBDA_Encoder_BitrateMode_Average 0x00000003
+#ifndef __IBDA_NameValueService_FWD_DEFINED__
+#define __IBDA_NameValueService_FWD_DEFINED__
+typedef interface IBDA_NameValueService IBDA_NameValueService;
+#endif
 
 #ifndef __IBDA_ConditionalAccessEx_FWD_DEFINED__
 #define __IBDA_ConditionalAccessEx_FWD_DEFINED__
-typedef struct IBDA_ConditionalAccessEx IBDA_ConditionalAccessEx;
+typedef interface IBDA_ConditionalAccessEx IBDA_ConditionalAccessEx;
 #endif
 
-#ifndef __IBDA_DRIDRMService_FWD_DEFINED__
-#define __IBDA_DRIDRMService_FWD_DEFINED__
-typedef struct IBDA_DRIDRMService IBDA_DRIDRMService;
-#endif
-
-#ifndef __IBDA_Encoder_FWD_DEFINED__
-#define __IBDA_Encoder_FWD_DEFINED__
-typedef struct IBDA_Encoder IBDA_Encoder;
+#ifndef __IBDA_ISDBConditionalAccess_FWD_DEFINED__
+#define __IBDA_ISDBConditionalAccess_FWD_DEFINED__
+typedef interface IBDA_ISDBConditionalAccess IBDA_ISDBConditionalAccess;
 #endif
 
 #ifndef __IBDA_EventingService_FWD_DEFINED__
 #define __IBDA_EventingService_FWD_DEFINED__
-typedef struct IBDA_EventingService IBDA_EventingService;
+typedef interface IBDA_EventingService IBDA_EventingService;
+#endif
+
+#ifndef __IBDA_AUX_FWD_DEFINED__
+#define __IBDA_AUX_FWD_DEFINED__
+typedef interface IBDA_AUX IBDA_AUX;
+#endif
+
+#ifndef __IBDA_Encoder_FWD_DEFINED__
+#define __IBDA_Encoder_FWD_DEFINED__
+typedef interface IBDA_Encoder IBDA_Encoder;
 #endif
 
 #ifndef __IBDA_FDC_FWD_DEFINED__
 #define __IBDA_FDC_FWD_DEFINED__
-typedef struct IBDA_FDC IBDA_FDC;
+typedef interface IBDA_FDC IBDA_FDC;
 #endif
 
 #ifndef __IBDA_GuideDataDeliveryService_FWD_DEFINED__
 #define __IBDA_GuideDataDeliveryService_FWD_DEFINED__
-typedef struct IBDA_GuideDataDeliveryService IBDA_GuideDataDeliveryService;
+typedef interface IBDA_GuideDataDeliveryService IBDA_GuideDataDeliveryService;
 #endif
 
-#ifndef __IBDA_ISDBConditionalAccess_FWD_DEFINED__
-#define __IBDA_ISDBConditionalAccess_FWD_DEFINED__
-typedef struct IBDA_ISDBConditionalAccess IBDA_ISDBConditionalAccess;
+#ifndef __IBDA_DRMService_FWD_DEFINED__
+#define __IBDA_DRMService_FWD_DEFINED__
+typedef interface IBDA_DRMService IBDA_DRMService;
+#endif
+
+#ifndef __IBDA_WMDRMSession_FWD_DEFINED__
+#define __IBDA_WMDRMSession_FWD_DEFINED__
+typedef interface IBDA_WMDRMSession IBDA_WMDRMSession;
+#endif
+
+#ifndef __IBDA_WMDRMTuner_FWD_DEFINED__
+#define __IBDA_WMDRMTuner_FWD_DEFINED__
+typedef interface IBDA_WMDRMTuner IBDA_WMDRMTuner;
+#endif
+
+#ifndef __IBDA_DRIDRMService_FWD_DEFINED__
+#define __IBDA_DRIDRMService_FWD_DEFINED__
+typedef interface IBDA_DRIDRMService IBDA_DRIDRMService;
+#endif
+
+#ifndef __IBDA_DRIWMDRMSession_FWD_DEFINED__
+#define __IBDA_DRIWMDRMSession_FWD_DEFINED__
+typedef interface IBDA_DRIWMDRMSession IBDA_DRIWMDRMSession;
 #endif
 
 #ifndef __IBDA_MUX_FWD_DEFINED__
 #define __IBDA_MUX_FWD_DEFINED__
-typedef struct IBDA_MUX IBDA_MUX;
+typedef interface IBDA_MUX IBDA_MUX;
+#endif
+
+#ifndef __IBDA_TransportStreamSelector_FWD_DEFINED__
+#define __IBDA_TransportStreamSelector_FWD_DEFINED__
+typedef interface IBDA_TransportStreamSelector IBDA_TransportStreamSelector;
 #endif
 
 #ifndef __IBDA_UserActivityService_FWD_DEFINED__
 #define __IBDA_UserActivityService_FWD_DEFINED__
-typedef struct IBDA_UserActivityService IBDA_UserActivityService;
+typedef interface IBDA_UserActivityService IBDA_UserActivityService;
 #endif
 
-#ifndef __IBDA_ISDBConditionalAccess_FWD_DEFINED__
-#define __IBDA_ISDBConditionalAccess_FWD_DEFINED__
-typedef struct IBDA_ISDBConditionalAccess IBDA_ISDBConditionalAccess;
+/* Headers for imported files */
+
+#include <unknwn.h>
+#include <strmif.h>
+#include <bdatypes.h>
+
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-#undef  INTERFACE
-#define INTERFACE IBDA_ConditionalAccessEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IBDA_ConditionalAccessEx,IUnknown)
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+typedef enum SmartCardStatusType {
+    CardInserted = 0,
+    CardRemoved = 1,
+    CardError = 2,
+    CardDataChanged = 3,
+    CardFirmwareUpgrade = 4
+} SmartCardStatusType;
+typedef enum SmartCardAssociationType {
+    NotAssociated = 0,
+    Associated = 1,
+    AssociationUnknown = 2
+} SmartCardAssociationType;
+typedef enum LocationCodeSchemeType {
+    SCTE_18 = 0
+} LocationCodeSchemeType;
+typedef enum EntitlementType {
+    Entitled = 0,
+    NotEntitled = 1,
+    TechnicalFailure = 2
+} EntitlementType;
+typedef enum UICloseReasonType {
+    NotReady = 0,
+    UserClosed = 1,
+    SystemClosed = 2,
+    DeviceClosed = 3,
+    ErrorClosed = 4
+} UICloseReasonType;
+typedef enum BDA_DrmPairingError {
+    BDA_DrmPairing_Succeeded = 0,
+    BDA_DrmPairing_HardwareFailure = 1,
+    BDA_DrmPairing_NeedRevocationData = 2,
+    BDA_DrmPairing_NeedIndiv = 3,
+    BDA_DrmPairing_Other = 4,
+    BDA_DrmPairing_DrmInitFailed = 5,
+    BDA_DrmPairing_DrmNotPaired = 6,
+    BDA_DrmPairing_DrmRePairSoon = 7,
+    BDA_DrmPairing_Aborted = 8,
+    BDA_DrmPairing_NeedSDKUpdate = 9
+} BDA_DrmPairingError;
+typedef struct EALocationCodeType {
+    LocationCodeSchemeType LocationCodeScheme;
+    BYTE state_code;
+    BYTE county_subdivision;
+    WORD county_code;
+} EALocationCodeType;
+typedef struct SmartCardApplication {
+    ApplicationTypeType ApplicationType;
+    USHORT ApplicationVersion;
+    BSTR pbstrApplicationName;
+    BSTR pbstrApplicationURL;
+} SmartCardApplication;
+
+#define PBDA_Encoder_Audio_AlgorithmType_MPEG1LayerII 0x0
+#define PBDA_Encoder_Audio_AlgorithmType_AC3 0x1
+
+#define PBDA_Encoder_Video_MPEG2PartII 0x0
+#define PBDA_Encoder_Video_MPEG4Part10 0x1
+
+#define PBDA_Encoder_Video_AVC 0x1
+#define PBDA_Encoder_Video_H264 0x1
+
+#define PBDA_Encoder_BitrateMode_Constant 1
+#define PBDA_Encoder_BitrateMode_Variable 2
+#define PBDA_Encoder_BitrateMode_Average 3
+typedef enum __WIDL_bdaiface_generated_name_0000000F {
+    KSPROPERTY_IPSINK_MULTICASTLIST = 0,
+    KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION = 1,
+    KSPROPERTY_IPSINK_ADAPTER_ADDRESS = 2
+} KSPROPERTY_IPSINK;
+/*****************************************************************************
+ * IBDA_NetworkProvider interface
+ */
+#ifndef __IBDA_NetworkProvider_INTERFACE_DEFINED__
+#define __IBDA_NetworkProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_NetworkProvider, 0xfd501041, 0x8ebe, 0x11ce, 0x81,0x83, 0x00,0xaa,0x00,0x57,0x7d,0xa2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fd501041-8ebe-11ce-8183-00aa00577da2")
+IBDA_NetworkProvider : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE PutSignalSource(
+        ULONG ulSignalSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSignalSource(
+        ULONG *pulSignalSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNetworkType(
+        GUID *pguidNetworkType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutTuningSpace(
+        REFGUID guidTuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTuningSpace(
+        GUID *pguidTuingSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterDeviceFilter(
+        IUnknown *pUnkFilterControl,
+        ULONG *ppvRegisitrationContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnRegisterDeviceFilter(
+        ULONG pvRegistrationContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_NetworkProvider, 0xfd501041, 0x8ebe, 0x11ce, 0x81,0x83, 0x00,0xaa,0x00,0x57,0x7d,0xa2)
+#endif
+#else
+typedef struct IBDA_NetworkProviderVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_NetworkProvider* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IBDA_ConditionalAccessEx methods */
-    STDMETHOD_(HRESULT,CheckEntitlementToken)(THIS_ ULONG ulDialogRequest,BSTR bstrLanguage,BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,ULONG ulcbEntitlementTokenLen,BYTE *pbEntitlementToken,ULONG *pulDescrambleStatus) PURE;
-    STDMETHOD_(HRESULT,CloseMmiDialog)(THIS_ ULONG ulDialogRequest,BSTR bstrLanguage,ULONG ulDialogNumber,BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,ULONG *pulSessionResult) PURE;
-    STDMETHOD_(HRESULT,CreateDialogRequestNumber)(THIS_ ULONG *pulDialogRequestNumber) PURE;
-    STDMETHOD_(HRESULT,OpenBroadcastMmi)(THIS_ ULONG ulDialogRequest,BSTR bstrLanguage,ULONG EventId) PURE;
-    STDMETHOD_(HRESULT,SetCaptureToken)(THIS_ ULONG ulcbCaptureTokenLen,BYTE *pbCaptureToken) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_NetworkProvider* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_NetworkProvider* This);
+
+    /*** IBDA_NetworkProvider methods ***/
+    HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
+        IBDA_NetworkProvider* This,
+        ULONG ulSignalSource);
+
+    HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
+        IBDA_NetworkProvider* This,
+        ULONG *pulSignalSource);
+
+    HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
+        IBDA_NetworkProvider* This,
+        GUID *pguidNetworkType);
+
+    HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
+        IBDA_NetworkProvider* This,
+        REFGUID guidTuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
+        IBDA_NetworkProvider* This,
+        GUID *pguidTuingSpace);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterDeviceFilter)(
+        IBDA_NetworkProvider* This,
+        IUnknown *pUnkFilterControl,
+        ULONG *ppvRegisitrationContext);
+
+    HRESULT (STDMETHODCALLTYPE *UnRegisterDeviceFilter)(
+        IBDA_NetworkProvider* This,
+        ULONG pvRegistrationContext);
 
     END_INTERFACE
+} IBDA_NetworkProviderVtbl;
+interface IBDA_NetworkProvider {
+    CONST_VTBL IBDA_NetworkProviderVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_NetworkProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_NetworkProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_NetworkProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_NetworkProvider methods ***/
+#define IBDA_NetworkProvider_PutSignalSource(This,ulSignalSource) (This)->lpVtbl->PutSignalSource(This,ulSignalSource)
+#define IBDA_NetworkProvider_GetSignalSource(This,pulSignalSource) (This)->lpVtbl->GetSignalSource(This,pulSignalSource)
+#define IBDA_NetworkProvider_GetNetworkType(This,pguidNetworkType) (This)->lpVtbl->GetNetworkType(This,pguidNetworkType)
+#define IBDA_NetworkProvider_PutTuningSpace(This,guidTuningSpace) (This)->lpVtbl->PutTuningSpace(This,guidTuningSpace)
+#define IBDA_NetworkProvider_GetTuningSpace(This,pguidTuingSpace) (This)->lpVtbl->GetTuningSpace(This,pguidTuingSpace)
+#define IBDA_NetworkProvider_RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext) (This)->lpVtbl->RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext)
+#define IBDA_NetworkProvider_UnRegisterDeviceFilter(This,pvRegistrationContext) (This)->lpVtbl->UnRegisterDeviceFilter(This,pvRegistrationContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_NetworkProvider_QueryInterface(IBDA_NetworkProvider* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_NetworkProvider_AddRef(IBDA_NetworkProvider* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_NetworkProvider_Release(IBDA_NetworkProvider* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_NetworkProvider methods ***/
+static FORCEINLINE HRESULT IBDA_NetworkProvider_PutSignalSource(IBDA_NetworkProvider* This,ULONG ulSignalSource) {
+    return This->lpVtbl->PutSignalSource(This,ulSignalSource);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_GetSignalSource(IBDA_NetworkProvider* This,ULONG *pulSignalSource) {
+    return This->lpVtbl->GetSignalSource(This,pulSignalSource);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_GetNetworkType(IBDA_NetworkProvider* This,GUID *pguidNetworkType) {
+    return This->lpVtbl->GetNetworkType(This,pguidNetworkType);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_PutTuningSpace(IBDA_NetworkProvider* This,REFGUID guidTuningSpace) {
+    return This->lpVtbl->PutTuningSpace(This,guidTuningSpace);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_GetTuningSpace(IBDA_NetworkProvider* This,GUID *pguidTuingSpace) {
+    return This->lpVtbl->GetTuningSpace(This,pguidTuingSpace);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_RegisterDeviceFilter(IBDA_NetworkProvider* This,IUnknown *pUnkFilterControl,ULONG *ppvRegisitrationContext) {
+    return This->lpVtbl->RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext);
+}
+static FORCEINLINE HRESULT IBDA_NetworkProvider_UnRegisterDeviceFilter(IBDA_NetworkProvider* This,ULONG pvRegistrationContext) {
+    return This->lpVtbl->UnRegisterDeviceFilter(This,pvRegistrationContext);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_PutSignalSource_Proxy(
+    IBDA_NetworkProvider* This,
+    ULONG ulSignalSource);
+void __RPC_STUB IBDA_NetworkProvider_PutSignalSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetSignalSource_Proxy(
+    IBDA_NetworkProvider* This,
+    ULONG *pulSignalSource);
+void __RPC_STUB IBDA_NetworkProvider_GetSignalSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetNetworkType_Proxy(
+    IBDA_NetworkProvider* This,
+    GUID *pguidNetworkType);
+void __RPC_STUB IBDA_NetworkProvider_GetNetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_PutTuningSpace_Proxy(
+    IBDA_NetworkProvider* This,
+    REFGUID guidTuningSpace);
+void __RPC_STUB IBDA_NetworkProvider_PutTuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetTuningSpace_Proxy(
+    IBDA_NetworkProvider* This,
+    GUID *pguidTuingSpace);
+void __RPC_STUB IBDA_NetworkProvider_GetTuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_RegisterDeviceFilter_Proxy(
+    IBDA_NetworkProvider* This,
+    IUnknown *pUnkFilterControl,
+    ULONG *ppvRegisitrationContext);
+void __RPC_STUB IBDA_NetworkProvider_RegisterDeviceFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_UnRegisterDeviceFilter_Proxy(
+    IBDA_NetworkProvider* This,
+    ULONG pvRegistrationContext);
+void __RPC_STUB IBDA_NetworkProvider_UnRegisterDeviceFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_NetworkProvider_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_EthernetFilter interface
+ */
+#ifndef __IBDA_EthernetFilter_INTERFACE_DEFINED__
+#define __IBDA_EthernetFilter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_EthernetFilter, 0x71985f43, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("71985f43-1ca1-11d3-9cc8-00c04f7971e0")
+IBDA_EthernetFilter : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
+        ULONG *pulcbAddresses) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
+        ULONG ulModeMask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
+        ULONG *pulModeMask) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_EthernetFilter, 0x71985f43, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_EthernetFilterVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_EthernetFilter* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_EthernetFilter* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_EthernetFilter* This);
+
+    /*** IBDA_EthernetFilter methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
+        IBDA_EthernetFilter* This,
+        ULONG *pulcbAddresses);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
+        IBDA_EthernetFilter* This,
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
+        IBDA_EthernetFilter* This,
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
+        IBDA_EthernetFilter* This,
+        ULONG ulModeMask);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
+        IBDA_EthernetFilter* This,
+        ULONG *pulModeMask);
+
+    END_INTERFACE
+} IBDA_EthernetFilterVtbl;
+interface IBDA_EthernetFilter {
+    CONST_VTBL IBDA_EthernetFilterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_EthernetFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_EthernetFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_EthernetFilter_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_EthernetFilter methods ***/
+#define IBDA_EthernetFilter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
+#define IBDA_EthernetFilter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
+#define IBDA_EthernetFilter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
+#define IBDA_EthernetFilter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
+#define IBDA_EthernetFilter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_EthernetFilter_QueryInterface(IBDA_EthernetFilter* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_EthernetFilter_AddRef(IBDA_EthernetFilter* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_EthernetFilter_Release(IBDA_EthernetFilter* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_EthernetFilter methods ***/
+static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastListSize(IBDA_EthernetFilter* This,ULONG *pulcbAddresses) {
+    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
+}
+static FORCEINLINE HRESULT IBDA_EthernetFilter_PutMulticastList(IBDA_EthernetFilter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastList(IBDA_EthernetFilter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_EthernetFilter_PutMulticastMode(IBDA_EthernetFilter* This,ULONG ulModeMask) {
+    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
+}
+static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastMode(IBDA_EthernetFilter* This,ULONG *pulModeMask) {
+    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastListSize_Proxy(
+    IBDA_EthernetFilter* This,
+    ULONG *pulcbAddresses);
+void __RPC_STUB IBDA_EthernetFilter_GetMulticastListSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_PutMulticastList_Proxy(
+    IBDA_EthernetFilter* This,
+    ULONG ulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_EthernetFilter_PutMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastList_Proxy(
+    IBDA_EthernetFilter* This,
+    ULONG *pulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_EthernetFilter_GetMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_PutMulticastMode_Proxy(
+    IBDA_EthernetFilter* This,
+    ULONG ulModeMask);
+void __RPC_STUB IBDA_EthernetFilter_PutMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastMode_Proxy(
+    IBDA_EthernetFilter* This,
+    ULONG *pulModeMask);
+void __RPC_STUB IBDA_EthernetFilter_GetMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_EthernetFilter_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_IPV4Filter interface
+ */
+#ifndef __IBDA_IPV4Filter_INTERFACE_DEFINED__
+#define __IBDA_IPV4Filter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_IPV4Filter, 0x71985f44, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("71985f44-1ca1-11d3-9cc8-00c04f7971e0")
+IBDA_IPV4Filter : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
+        ULONG *pulcbAddresses) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
+        ULONG ulModeMask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
+        ULONG *pulModeMask) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_IPV4Filter, 0x71985f44, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_IPV4FilterVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_IPV4Filter* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_IPV4Filter* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_IPV4Filter* This);
+
+    /*** IBDA_IPV4Filter methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
+        IBDA_IPV4Filter* This,
+        ULONG *pulcbAddresses);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
+        IBDA_IPV4Filter* This,
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
+        IBDA_IPV4Filter* This,
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
+        IBDA_IPV4Filter* This,
+        ULONG ulModeMask);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
+        IBDA_IPV4Filter* This,
+        ULONG *pulModeMask);
+
+    END_INTERFACE
+} IBDA_IPV4FilterVtbl;
+interface IBDA_IPV4Filter {
+    CONST_VTBL IBDA_IPV4FilterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_IPV4Filter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_IPV4Filter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_IPV4Filter_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_IPV4Filter methods ***/
+#define IBDA_IPV4Filter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
+#define IBDA_IPV4Filter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
+#define IBDA_IPV4Filter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
+#define IBDA_IPV4Filter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
+#define IBDA_IPV4Filter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_IPV4Filter_QueryInterface(IBDA_IPV4Filter* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_IPV4Filter_AddRef(IBDA_IPV4Filter* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_IPV4Filter_Release(IBDA_IPV4Filter* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_IPV4Filter methods ***/
+static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastListSize(IBDA_IPV4Filter* This,ULONG *pulcbAddresses) {
+    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
+}
+static FORCEINLINE HRESULT IBDA_IPV4Filter_PutMulticastList(IBDA_IPV4Filter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastList(IBDA_IPV4Filter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_IPV4Filter_PutMulticastMode(IBDA_IPV4Filter* This,ULONG ulModeMask) {
+    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
+}
+static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastMode(IBDA_IPV4Filter* This,ULONG *pulModeMask) {
+    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastListSize_Proxy(
+    IBDA_IPV4Filter* This,
+    ULONG *pulcbAddresses);
+void __RPC_STUB IBDA_IPV4Filter_GetMulticastListSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_PutMulticastList_Proxy(
+    IBDA_IPV4Filter* This,
+    ULONG ulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_IPV4Filter_PutMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastList_Proxy(
+    IBDA_IPV4Filter* This,
+    ULONG *pulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_IPV4Filter_GetMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_PutMulticastMode_Proxy(
+    IBDA_IPV4Filter* This,
+    ULONG ulModeMask);
+void __RPC_STUB IBDA_IPV4Filter_PutMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastMode_Proxy(
+    IBDA_IPV4Filter* This,
+    ULONG *pulModeMask);
+void __RPC_STUB IBDA_IPV4Filter_GetMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_IPV4Filter_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_IPV6Filter interface
+ */
+#ifndef __IBDA_IPV6Filter_INTERFACE_DEFINED__
+#define __IBDA_IPV6Filter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_IPV6Filter, 0xe1785a74, 0x2a23, 0x4fb3, 0x92,0x45, 0xa8,0xf8,0x80,0x17,0xef,0x33);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e1785a74-2a23-4fb3-9245-a8f88017ef33")
+IBDA_IPV6Filter : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
+        ULONG *pulcbAddresses) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
+        ULONG ulModeMask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
+        ULONG *pulModeMask) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_IPV6Filter, 0xe1785a74, 0x2a23, 0x4fb3, 0x92,0x45, 0xa8,0xf8,0x80,0x17,0xef,0x33)
+#endif
+#else
+typedef struct IBDA_IPV6FilterVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_IPV6Filter* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_IPV6Filter* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_IPV6Filter* This);
+
+    /*** IBDA_IPV6Filter methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
+        IBDA_IPV6Filter* This,
+        ULONG *pulcbAddresses);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
+        IBDA_IPV6Filter* This,
+        ULONG ulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
+        IBDA_IPV6Filter* This,
+        ULONG *pulcbAddresses,
+        BYTE pAddressList[]);
+
+    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
+        IBDA_IPV6Filter* This,
+        ULONG ulModeMask);
+
+    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
+        IBDA_IPV6Filter* This,
+        ULONG *pulModeMask);
+
+    END_INTERFACE
+} IBDA_IPV6FilterVtbl;
+interface IBDA_IPV6Filter {
+    CONST_VTBL IBDA_IPV6FilterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_IPV6Filter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_IPV6Filter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_IPV6Filter_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_IPV6Filter methods ***/
+#define IBDA_IPV6Filter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
+#define IBDA_IPV6Filter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
+#define IBDA_IPV6Filter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
+#define IBDA_IPV6Filter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
+#define IBDA_IPV6Filter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_IPV6Filter_QueryInterface(IBDA_IPV6Filter* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_IPV6Filter_AddRef(IBDA_IPV6Filter* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_IPV6Filter_Release(IBDA_IPV6Filter* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_IPV6Filter methods ***/
+static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastListSize(IBDA_IPV6Filter* This,ULONG *pulcbAddresses) {
+    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
+}
+static FORCEINLINE HRESULT IBDA_IPV6Filter_PutMulticastList(IBDA_IPV6Filter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastList(IBDA_IPV6Filter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
+    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
+}
+static FORCEINLINE HRESULT IBDA_IPV6Filter_PutMulticastMode(IBDA_IPV6Filter* This,ULONG ulModeMask) {
+    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
+}
+static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastMode(IBDA_IPV6Filter* This,ULONG *pulModeMask) {
+    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastListSize_Proxy(
+    IBDA_IPV6Filter* This,
+    ULONG *pulcbAddresses);
+void __RPC_STUB IBDA_IPV6Filter_GetMulticastListSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_PutMulticastList_Proxy(
+    IBDA_IPV6Filter* This,
+    ULONG ulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_IPV6Filter_PutMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastList_Proxy(
+    IBDA_IPV6Filter* This,
+    ULONG *pulcbAddresses,
+    BYTE pAddressList[]);
+void __RPC_STUB IBDA_IPV6Filter_GetMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_PutMulticastMode_Proxy(
+    IBDA_IPV6Filter* This,
+    ULONG ulModeMask);
+void __RPC_STUB IBDA_IPV6Filter_PutMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastMode_Proxy(
+    IBDA_IPV6Filter* This,
+    ULONG *pulModeMask);
+void __RPC_STUB IBDA_IPV6Filter_GetMulticastMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_IPV6Filter_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DeviceControl interface
+ */
+#ifndef __IBDA_DeviceControl_INTERFACE_DEFINED__
+#define __IBDA_DeviceControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DeviceControl, 0xfd0a5af3, 0xb41d, 0x11d2, 0x9c,0x95, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fd0a5af3-b41d-11d2-9c95-00c04f7971e0")
+IBDA_DeviceControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE StartChanges(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckChanges(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommitChanges(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetChangeState(
+        ULONG *pState) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DeviceControl, 0xfd0a5af3, 0xb41d, 0x11d2, 0x9c,0x95, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_DeviceControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DeviceControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DeviceControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DeviceControl* This);
+
+    /*** IBDA_DeviceControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *StartChanges)(
+        IBDA_DeviceControl* This);
+
+    HRESULT (STDMETHODCALLTYPE *CheckChanges)(
+        IBDA_DeviceControl* This);
+
+    HRESULT (STDMETHODCALLTYPE *CommitChanges)(
+        IBDA_DeviceControl* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetChangeState)(
+        IBDA_DeviceControl* This,
+        ULONG *pState);
+
+    END_INTERFACE
+} IBDA_DeviceControlVtbl;
+interface IBDA_DeviceControl {
+    CONST_VTBL IBDA_DeviceControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DeviceControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DeviceControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DeviceControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DeviceControl methods ***/
+#define IBDA_DeviceControl_StartChanges(This) (This)->lpVtbl->StartChanges(This)
+#define IBDA_DeviceControl_CheckChanges(This) (This)->lpVtbl->CheckChanges(This)
+#define IBDA_DeviceControl_CommitChanges(This) (This)->lpVtbl->CommitChanges(This)
+#define IBDA_DeviceControl_GetChangeState(This,pState) (This)->lpVtbl->GetChangeState(This,pState)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DeviceControl_QueryInterface(IBDA_DeviceControl* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DeviceControl_AddRef(IBDA_DeviceControl* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DeviceControl_Release(IBDA_DeviceControl* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DeviceControl methods ***/
+static FORCEINLINE HRESULT IBDA_DeviceControl_StartChanges(IBDA_DeviceControl* This) {
+    return This->lpVtbl->StartChanges(This);
+}
+static FORCEINLINE HRESULT IBDA_DeviceControl_CheckChanges(IBDA_DeviceControl* This) {
+    return This->lpVtbl->CheckChanges(This);
+}
+static FORCEINLINE HRESULT IBDA_DeviceControl_CommitChanges(IBDA_DeviceControl* This) {
+    return This->lpVtbl->CommitChanges(This);
+}
+static FORCEINLINE HRESULT IBDA_DeviceControl_GetChangeState(IBDA_DeviceControl* This,ULONG *pState) {
+    return This->lpVtbl->GetChangeState(This,pState);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_StartChanges_Proxy(
+    IBDA_DeviceControl* This);
+void __RPC_STUB IBDA_DeviceControl_StartChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_CheckChanges_Proxy(
+    IBDA_DeviceControl* This);
+void __RPC_STUB IBDA_DeviceControl_CheckChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_CommitChanges_Proxy(
+    IBDA_DeviceControl* This);
+void __RPC_STUB IBDA_DeviceControl_CommitChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_GetChangeState_Proxy(
+    IBDA_DeviceControl* This,
+    ULONG *pState);
+void __RPC_STUB IBDA_DeviceControl_GetChangeState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DeviceControl_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_PinControl interface
+ */
+#ifndef __IBDA_PinControl_INTERFACE_DEFINED__
+#define __IBDA_PinControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_PinControl, 0x0ded49d5, 0xa8b7, 0x4d5d, 0x97,0xa1, 0x12,0xb0,0xc1,0x95,0x87,0x4d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0ded49d5-a8b7-4d5d-97a1-12b0c195874d")
+IBDA_PinControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPinID(
+        ULONG *pulPinID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPinType(
+        ULONG *pulPinType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegistrationContext(
+        ULONG *pulRegistrationCtx) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_PinControl, 0x0ded49d5, 0xa8b7, 0x4d5d, 0x97,0xa1, 0x12,0xb0,0xc1,0x95,0x87,0x4d)
+#endif
+#else
+typedef struct IBDA_PinControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_PinControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_PinControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_PinControl* This);
+
+    /*** IBDA_PinControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPinID)(
+        IBDA_PinControl* This,
+        ULONG *pulPinID);
+
+    HRESULT (STDMETHODCALLTYPE *GetPinType)(
+        IBDA_PinControl* This,
+        ULONG *pulPinType);
+
+    HRESULT (STDMETHODCALLTYPE *RegistrationContext)(
+        IBDA_PinControl* This,
+        ULONG *pulRegistrationCtx);
+
+    END_INTERFACE
+} IBDA_PinControlVtbl;
+interface IBDA_PinControl {
+    CONST_VTBL IBDA_PinControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_PinControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_PinControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_PinControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_PinControl methods ***/
+#define IBDA_PinControl_GetPinID(This,pulPinID) (This)->lpVtbl->GetPinID(This,pulPinID)
+#define IBDA_PinControl_GetPinType(This,pulPinType) (This)->lpVtbl->GetPinType(This,pulPinType)
+#define IBDA_PinControl_RegistrationContext(This,pulRegistrationCtx) (This)->lpVtbl->RegistrationContext(This,pulRegistrationCtx)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_PinControl_QueryInterface(IBDA_PinControl* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_PinControl_AddRef(IBDA_PinControl* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_PinControl_Release(IBDA_PinControl* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_PinControl methods ***/
+static FORCEINLINE HRESULT IBDA_PinControl_GetPinID(IBDA_PinControl* This,ULONG *pulPinID) {
+    return This->lpVtbl->GetPinID(This,pulPinID);
+}
+static FORCEINLINE HRESULT IBDA_PinControl_GetPinType(IBDA_PinControl* This,ULONG *pulPinType) {
+    return This->lpVtbl->GetPinType(This,pulPinType);
+}
+static FORCEINLINE HRESULT IBDA_PinControl_RegistrationContext(IBDA_PinControl* This,ULONG *pulRegistrationCtx) {
+    return This->lpVtbl->RegistrationContext(This,pulRegistrationCtx);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_PinControl_GetPinID_Proxy(
+    IBDA_PinControl* This,
+    ULONG *pulPinID);
+void __RPC_STUB IBDA_PinControl_GetPinID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_PinControl_GetPinType_Proxy(
+    IBDA_PinControl* This,
+    ULONG *pulPinType);
+void __RPC_STUB IBDA_PinControl_GetPinType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_PinControl_RegistrationContext_Proxy(
+    IBDA_PinControl* This,
+    ULONG *pulRegistrationCtx);
+void __RPC_STUB IBDA_PinControl_RegistrationContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_PinControl_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_SignalProperties interface
+ */
+#ifndef __IBDA_SignalProperties_INTERFACE_DEFINED__
+#define __IBDA_SignalProperties_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_SignalProperties, 0xd2f1644b, 0xb409, 0x11d2, 0xbc,0x69, 0x00,0xa0,0xc9,0xee,0x9e,0x16);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d2f1644b-b409-11d2-bc69-00a0c9ee9e16")
+IBDA_SignalProperties : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE PutNetworkType(
+        REFGUID guidNetworkType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNetworkType(
+        GUID *pguidNetworkType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutSignalSource(
+        ULONG ulSignalSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSignalSource(
+        ULONG *pulSignalSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutTuningSpace(
+        REFGUID guidTuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTuningSpace(
+        GUID *pguidTuingSpace) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_SignalProperties, 0xd2f1644b, 0xb409, 0x11d2, 0xbc,0x69, 0x00,0xa0,0xc9,0xee,0x9e,0x16)
+#endif
+#else
+typedef struct IBDA_SignalPropertiesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_SignalProperties* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_SignalProperties* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_SignalProperties* This);
+
+    /*** IBDA_SignalProperties methods ***/
+    HRESULT (STDMETHODCALLTYPE *PutNetworkType)(
+        IBDA_SignalProperties* This,
+        REFGUID guidNetworkType);
+
+    HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
+        IBDA_SignalProperties* This,
+        GUID *pguidNetworkType);
+
+    HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
+        IBDA_SignalProperties* This,
+        ULONG ulSignalSource);
+
+    HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
+        IBDA_SignalProperties* This,
+        ULONG *pulSignalSource);
+
+    HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
+        IBDA_SignalProperties* This,
+        REFGUID guidTuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
+        IBDA_SignalProperties* This,
+        GUID *pguidTuingSpace);
+
+    END_INTERFACE
+} IBDA_SignalPropertiesVtbl;
+interface IBDA_SignalProperties {
+    CONST_VTBL IBDA_SignalPropertiesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_SignalProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_SignalProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_SignalProperties_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_SignalProperties methods ***/
+#define IBDA_SignalProperties_PutNetworkType(This,guidNetworkType) (This)->lpVtbl->PutNetworkType(This,guidNetworkType)
+#define IBDA_SignalProperties_GetNetworkType(This,pguidNetworkType) (This)->lpVtbl->GetNetworkType(This,pguidNetworkType)
+#define IBDA_SignalProperties_PutSignalSource(This,ulSignalSource) (This)->lpVtbl->PutSignalSource(This,ulSignalSource)
+#define IBDA_SignalProperties_GetSignalSource(This,pulSignalSource) (This)->lpVtbl->GetSignalSource(This,pulSignalSource)
+#define IBDA_SignalProperties_PutTuningSpace(This,guidTuningSpace) (This)->lpVtbl->PutTuningSpace(This,guidTuningSpace)
+#define IBDA_SignalProperties_GetTuningSpace(This,pguidTuingSpace) (This)->lpVtbl->GetTuningSpace(This,pguidTuingSpace)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_SignalProperties_QueryInterface(IBDA_SignalProperties* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_SignalProperties_AddRef(IBDA_SignalProperties* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_SignalProperties_Release(IBDA_SignalProperties* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_SignalProperties methods ***/
+static FORCEINLINE HRESULT IBDA_SignalProperties_PutNetworkType(IBDA_SignalProperties* This,REFGUID guidNetworkType) {
+    return This->lpVtbl->PutNetworkType(This,guidNetworkType);
+}
+static FORCEINLINE HRESULT IBDA_SignalProperties_GetNetworkType(IBDA_SignalProperties* This,GUID *pguidNetworkType) {
+    return This->lpVtbl->GetNetworkType(This,pguidNetworkType);
+}
+static FORCEINLINE HRESULT IBDA_SignalProperties_PutSignalSource(IBDA_SignalProperties* This,ULONG ulSignalSource) {
+    return This->lpVtbl->PutSignalSource(This,ulSignalSource);
+}
+static FORCEINLINE HRESULT IBDA_SignalProperties_GetSignalSource(IBDA_SignalProperties* This,ULONG *pulSignalSource) {
+    return This->lpVtbl->GetSignalSource(This,pulSignalSource);
+}
+static FORCEINLINE HRESULT IBDA_SignalProperties_PutTuningSpace(IBDA_SignalProperties* This,REFGUID guidTuningSpace) {
+    return This->lpVtbl->PutTuningSpace(This,guidTuningSpace);
+}
+static FORCEINLINE HRESULT IBDA_SignalProperties_GetTuningSpace(IBDA_SignalProperties* This,GUID *pguidTuingSpace) {
+    return This->lpVtbl->GetTuningSpace(This,pguidTuingSpace);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutNetworkType_Proxy(
+    IBDA_SignalProperties* This,
+    REFGUID guidNetworkType);
+void __RPC_STUB IBDA_SignalProperties_PutNetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetNetworkType_Proxy(
+    IBDA_SignalProperties* This,
+    GUID *pguidNetworkType);
+void __RPC_STUB IBDA_SignalProperties_GetNetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutSignalSource_Proxy(
+    IBDA_SignalProperties* This,
+    ULONG ulSignalSource);
+void __RPC_STUB IBDA_SignalProperties_PutSignalSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetSignalSource_Proxy(
+    IBDA_SignalProperties* This,
+    ULONG *pulSignalSource);
+void __RPC_STUB IBDA_SignalProperties_GetSignalSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutTuningSpace_Proxy(
+    IBDA_SignalProperties* This,
+    REFGUID guidTuningSpace);
+void __RPC_STUB IBDA_SignalProperties_PutTuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetTuningSpace_Proxy(
+    IBDA_SignalProperties* This,
+    GUID *pguidTuingSpace);
+void __RPC_STUB IBDA_SignalProperties_GetTuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_SignalProperties_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_SignalStatistics interface
+ */
+#ifndef __IBDA_SignalStatistics_INTERFACE_DEFINED__
+#define __IBDA_SignalStatistics_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_SignalStatistics, 0x1347d106, 0xcf3a, 0x428a, 0xa5,0xcb, 0xac,0x0d,0x9a,0x2a,0x43,0x38);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1347d106-cf3a-428a-a5cb-ac0d9a2a4338")
+IBDA_SignalStatistics : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_SignalStrength(
+        LONG lDbStrength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalStrength(
+        LONG *plDbStrength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalQuality(
+        LONG lPercentQuality) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalQuality(
+        LONG *plPercentQuality) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalPresent(
+        BOOLEAN fPresent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalPresent(
+        BOOLEAN *pfPresent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalLocked(
+        BOOLEAN fLocked) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalLocked(
+        BOOLEAN *pfLocked) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SampleTime(
+        LONG lmsSampleTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SampleTime(
+        LONG *plmsSampleTime) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_SignalStatistics, 0x1347d106, 0xcf3a, 0x428a, 0xa5,0xcb, 0xac,0x0d,0x9a,0x2a,0x43,0x38)
+#endif
+#else
+typedef struct IBDA_SignalStatisticsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_SignalStatistics* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_SignalStatistics* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_SignalStatistics* This);
+
+    /*** IBDA_SignalStatistics methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_SignalStrength)(
+        IBDA_SignalStatistics* This,
+        LONG lDbStrength);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
+        IBDA_SignalStatistics* This,
+        LONG *plDbStrength);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalQuality)(
+        IBDA_SignalStatistics* This,
+        LONG lPercentQuality);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalQuality)(
+        IBDA_SignalStatistics* This,
+        LONG *plPercentQuality);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalPresent)(
+        IBDA_SignalStatistics* This,
+        BOOLEAN fPresent);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalPresent)(
+        IBDA_SignalStatistics* This,
+        BOOLEAN *pfPresent);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalLocked)(
+        IBDA_SignalStatistics* This,
+        BOOLEAN fLocked);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalLocked)(
+        IBDA_SignalStatistics* This,
+        BOOLEAN *pfLocked);
+
+    HRESULT (STDMETHODCALLTYPE *put_SampleTime)(
+        IBDA_SignalStatistics* This,
+        LONG lmsSampleTime);
+
+    HRESULT (STDMETHODCALLTYPE *get_SampleTime)(
+        IBDA_SignalStatistics* This,
+        LONG *plmsSampleTime);
+
+    END_INTERFACE
+} IBDA_SignalStatisticsVtbl;
+interface IBDA_SignalStatistics {
+    CONST_VTBL IBDA_SignalStatisticsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_SignalStatistics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_SignalStatistics_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_SignalStatistics_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_SignalStatistics methods ***/
+#define IBDA_SignalStatistics_put_SignalStrength(This,lDbStrength) (This)->lpVtbl->put_SignalStrength(This,lDbStrength)
+#define IBDA_SignalStatistics_get_SignalStrength(This,plDbStrength) (This)->lpVtbl->get_SignalStrength(This,plDbStrength)
+#define IBDA_SignalStatistics_put_SignalQuality(This,lPercentQuality) (This)->lpVtbl->put_SignalQuality(This,lPercentQuality)
+#define IBDA_SignalStatistics_get_SignalQuality(This,plPercentQuality) (This)->lpVtbl->get_SignalQuality(This,plPercentQuality)
+#define IBDA_SignalStatistics_put_SignalPresent(This,fPresent) (This)->lpVtbl->put_SignalPresent(This,fPresent)
+#define IBDA_SignalStatistics_get_SignalPresent(This,pfPresent) (This)->lpVtbl->get_SignalPresent(This,pfPresent)
+#define IBDA_SignalStatistics_put_SignalLocked(This,fLocked) (This)->lpVtbl->put_SignalLocked(This,fLocked)
+#define IBDA_SignalStatistics_get_SignalLocked(This,pfLocked) (This)->lpVtbl->get_SignalLocked(This,pfLocked)
+#define IBDA_SignalStatistics_put_SampleTime(This,lmsSampleTime) (This)->lpVtbl->put_SampleTime(This,lmsSampleTime)
+#define IBDA_SignalStatistics_get_SampleTime(This,plmsSampleTime) (This)->lpVtbl->get_SampleTime(This,plmsSampleTime)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_SignalStatistics_QueryInterface(IBDA_SignalStatistics* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_SignalStatistics_AddRef(IBDA_SignalStatistics* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_SignalStatistics_Release(IBDA_SignalStatistics* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_SignalStatistics methods ***/
+static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalStrength(IBDA_SignalStatistics* This,LONG lDbStrength) {
+    return This->lpVtbl->put_SignalStrength(This,lDbStrength);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalStrength(IBDA_SignalStatistics* This,LONG *plDbStrength) {
+    return This->lpVtbl->get_SignalStrength(This,plDbStrength);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalQuality(IBDA_SignalStatistics* This,LONG lPercentQuality) {
+    return This->lpVtbl->put_SignalQuality(This,lPercentQuality);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalQuality(IBDA_SignalStatistics* This,LONG *plPercentQuality) {
+    return This->lpVtbl->get_SignalQuality(This,plPercentQuality);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalPresent(IBDA_SignalStatistics* This,BOOLEAN fPresent) {
+    return This->lpVtbl->put_SignalPresent(This,fPresent);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalPresent(IBDA_SignalStatistics* This,BOOLEAN *pfPresent) {
+    return This->lpVtbl->get_SignalPresent(This,pfPresent);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalLocked(IBDA_SignalStatistics* This,BOOLEAN fLocked) {
+    return This->lpVtbl->put_SignalLocked(This,fLocked);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalLocked(IBDA_SignalStatistics* This,BOOLEAN *pfLocked) {
+    return This->lpVtbl->get_SignalLocked(This,pfLocked);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SampleTime(IBDA_SignalStatistics* This,LONG lmsSampleTime) {
+    return This->lpVtbl->put_SampleTime(This,lmsSampleTime);
+}
+static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SampleTime(IBDA_SignalStatistics* This,LONG *plmsSampleTime) {
+    return This->lpVtbl->get_SampleTime(This,plmsSampleTime);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalStrength_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG lDbStrength);
+void __RPC_STUB IBDA_SignalStatistics_put_SignalStrength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalStrength_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG *plDbStrength);
+void __RPC_STUB IBDA_SignalStatistics_get_SignalStrength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalQuality_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG lPercentQuality);
+void __RPC_STUB IBDA_SignalStatistics_put_SignalQuality_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalQuality_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG *plPercentQuality);
+void __RPC_STUB IBDA_SignalStatistics_get_SignalQuality_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalPresent_Proxy(
+    IBDA_SignalStatistics* This,
+    BOOLEAN fPresent);
+void __RPC_STUB IBDA_SignalStatistics_put_SignalPresent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalPresent_Proxy(
+    IBDA_SignalStatistics* This,
+    BOOLEAN *pfPresent);
+void __RPC_STUB IBDA_SignalStatistics_get_SignalPresent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalLocked_Proxy(
+    IBDA_SignalStatistics* This,
+    BOOLEAN fLocked);
+void __RPC_STUB IBDA_SignalStatistics_put_SignalLocked_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalLocked_Proxy(
+    IBDA_SignalStatistics* This,
+    BOOLEAN *pfLocked);
+void __RPC_STUB IBDA_SignalStatistics_get_SignalLocked_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SampleTime_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG lmsSampleTime);
+void __RPC_STUB IBDA_SignalStatistics_put_SampleTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SampleTime_Proxy(
+    IBDA_SignalStatistics* This,
+    LONG *plmsSampleTime);
+void __RPC_STUB IBDA_SignalStatistics_get_SampleTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_SignalStatistics_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_Topology interface
+ */
+#ifndef __IBDA_Topology_INTERFACE_DEFINED__
+#define __IBDA_Topology_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_Topology, 0x79b56888, 0x7fea, 0x4690, 0xb4,0x5d, 0x38,0xfd,0x3c,0x78,0x49,0xbe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("79b56888-7fea-4690-b45d-38fd3c7849be")
+IBDA_Topology : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetNodeTypes(
+        ULONG *pulcNodeTypes,
+        ULONG ulcNodeTypesMax,
+        ULONG rgulNodeTypes[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNodeDescriptors(
+        ULONG *ulcNodeDescriptors,
+        ULONG ulcNodeDescriptorsMax,
+        BDANODE_DESCRIPTOR rgNodeDescriptors[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNodeInterfaces(
+        ULONG ulNodeType,
+        ULONG *pulcInterfaces,
+        ULONG ulcInterfacesMax,
+        GUID rgguidInterfaces[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPinTypes(
+        ULONG *pulcPinTypes,
+        ULONG ulcPinTypesMax,
+        ULONG rgulPinTypes[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTemplateConnections(
+        ULONG *pulcConnections,
+        ULONG ulcConnectionsMax,
+        BDA_TEMPLATE_CONNECTION rgConnections[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePin(
+        ULONG ulPinType,
+        ULONG *pulPinId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeletePin(
+        ULONG ulPinId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMediaType(
+        ULONG ulPinId,
+        AM_MEDIA_TYPE *pMediaType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMedium(
+        ULONG ulPinId,
+        REGPINMEDIUM *pMedium) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateTopology(
+        ULONG ulInputPinId,
+        ULONG ulOutputPinId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetControlNode(
+        ULONG ulInputPinId,
+        ULONG ulOutputPinId,
+        ULONG ulNodeType,
+        IUnknown **ppControlNode) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_Topology, 0x79b56888, 0x7fea, 0x4690, 0xb4,0x5d, 0x38,0xfd,0x3c,0x78,0x49,0xbe)
+#endif
+#else
+typedef struct IBDA_TopologyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_Topology* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_Topology* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_Topology* This);
+
+    /*** IBDA_Topology methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetNodeTypes)(
+        IBDA_Topology* This,
+        ULONG *pulcNodeTypes,
+        ULONG ulcNodeTypesMax,
+        ULONG rgulNodeTypes[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetNodeDescriptors)(
+        IBDA_Topology* This,
+        ULONG *ulcNodeDescriptors,
+        ULONG ulcNodeDescriptorsMax,
+        BDANODE_DESCRIPTOR rgNodeDescriptors[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetNodeInterfaces)(
+        IBDA_Topology* This,
+        ULONG ulNodeType,
+        ULONG *pulcInterfaces,
+        ULONG ulcInterfacesMax,
+        GUID rgguidInterfaces[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetPinTypes)(
+        IBDA_Topology* This,
+        ULONG *pulcPinTypes,
+        ULONG ulcPinTypesMax,
+        ULONG rgulPinTypes[]);
+
+    HRESULT (STDMETHODCALLTYPE *GetTemplateConnections)(
+        IBDA_Topology* This,
+        ULONG *pulcConnections,
+        ULONG ulcConnectionsMax,
+        BDA_TEMPLATE_CONNECTION rgConnections[]);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePin)(
+        IBDA_Topology* This,
+        ULONG ulPinType,
+        ULONG *pulPinId);
+
+    HRESULT (STDMETHODCALLTYPE *DeletePin)(
+        IBDA_Topology* This,
+        ULONG ulPinId);
+
+    HRESULT (STDMETHODCALLTYPE *SetMediaType)(
+        IBDA_Topology* This,
+        ULONG ulPinId,
+        AM_MEDIA_TYPE *pMediaType);
+
+    HRESULT (STDMETHODCALLTYPE *SetMedium)(
+        IBDA_Topology* This,
+        ULONG ulPinId,
+        REGPINMEDIUM *pMedium);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTopology)(
+        IBDA_Topology* This,
+        ULONG ulInputPinId,
+        ULONG ulOutputPinId);
+
+    HRESULT (STDMETHODCALLTYPE *GetControlNode)(
+        IBDA_Topology* This,
+        ULONG ulInputPinId,
+        ULONG ulOutputPinId,
+        ULONG ulNodeType,
+        IUnknown **ppControlNode);
+
+    END_INTERFACE
+} IBDA_TopologyVtbl;
+interface IBDA_Topology {
+    CONST_VTBL IBDA_TopologyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_Topology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_Topology_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_Topology_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_Topology methods ***/
+#define IBDA_Topology_GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes) (This)->lpVtbl->GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes)
+#define IBDA_Topology_GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors) (This)->lpVtbl->GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors)
+#define IBDA_Topology_GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces) (This)->lpVtbl->GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces)
+#define IBDA_Topology_GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes) (This)->lpVtbl->GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes)
+#define IBDA_Topology_GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections) (This)->lpVtbl->GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections)
+#define IBDA_Topology_CreatePin(This,ulPinType,pulPinId) (This)->lpVtbl->CreatePin(This,ulPinType,pulPinId)
+#define IBDA_Topology_DeletePin(This,ulPinId) (This)->lpVtbl->DeletePin(This,ulPinId)
+#define IBDA_Topology_SetMediaType(This,ulPinId,pMediaType) (This)->lpVtbl->SetMediaType(This,ulPinId,pMediaType)
+#define IBDA_Topology_SetMedium(This,ulPinId,pMedium) (This)->lpVtbl->SetMedium(This,ulPinId,pMedium)
+#define IBDA_Topology_CreateTopology(This,ulInputPinId,ulOutputPinId) (This)->lpVtbl->CreateTopology(This,ulInputPinId,ulOutputPinId)
+#define IBDA_Topology_GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode) (This)->lpVtbl->GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_Topology_QueryInterface(IBDA_Topology* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_Topology_AddRef(IBDA_Topology* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_Topology_Release(IBDA_Topology* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_Topology methods ***/
+static FORCEINLINE HRESULT IBDA_Topology_GetNodeTypes(IBDA_Topology* This,ULONG *pulcNodeTypes,ULONG ulcNodeTypesMax,ULONG rgulNodeTypes[]) {
+    return This->lpVtbl->GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes);
+}
+static FORCEINLINE HRESULT IBDA_Topology_GetNodeDescriptors(IBDA_Topology* This,ULONG *ulcNodeDescriptors,ULONG ulcNodeDescriptorsMax,BDANODE_DESCRIPTOR rgNodeDescriptors[]) {
+    return This->lpVtbl->GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors);
+}
+static FORCEINLINE HRESULT IBDA_Topology_GetNodeInterfaces(IBDA_Topology* This,ULONG ulNodeType,ULONG *pulcInterfaces,ULONG ulcInterfacesMax,GUID rgguidInterfaces[]) {
+    return This->lpVtbl->GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces);
+}
+static FORCEINLINE HRESULT IBDA_Topology_GetPinTypes(IBDA_Topology* This,ULONG *pulcPinTypes,ULONG ulcPinTypesMax,ULONG rgulPinTypes[]) {
+    return This->lpVtbl->GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes);
+}
+static FORCEINLINE HRESULT IBDA_Topology_GetTemplateConnections(IBDA_Topology* This,ULONG *pulcConnections,ULONG ulcConnectionsMax,BDA_TEMPLATE_CONNECTION rgConnections[]) {
+    return This->lpVtbl->GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections);
+}
+static FORCEINLINE HRESULT IBDA_Topology_CreatePin(IBDA_Topology* This,ULONG ulPinType,ULONG *pulPinId) {
+    return This->lpVtbl->CreatePin(This,ulPinType,pulPinId);
+}
+static FORCEINLINE HRESULT IBDA_Topology_DeletePin(IBDA_Topology* This,ULONG ulPinId) {
+    return This->lpVtbl->DeletePin(This,ulPinId);
+}
+static FORCEINLINE HRESULT IBDA_Topology_SetMediaType(IBDA_Topology* This,ULONG ulPinId,AM_MEDIA_TYPE *pMediaType) {
+    return This->lpVtbl->SetMediaType(This,ulPinId,pMediaType);
+}
+static FORCEINLINE HRESULT IBDA_Topology_SetMedium(IBDA_Topology* This,ULONG ulPinId,REGPINMEDIUM *pMedium) {
+    return This->lpVtbl->SetMedium(This,ulPinId,pMedium);
+}
+static FORCEINLINE HRESULT IBDA_Topology_CreateTopology(IBDA_Topology* This,ULONG ulInputPinId,ULONG ulOutputPinId) {
+    return This->lpVtbl->CreateTopology(This,ulInputPinId,ulOutputPinId);
+}
+static FORCEINLINE HRESULT IBDA_Topology_GetControlNode(IBDA_Topology* This,ULONG ulInputPinId,ULONG ulOutputPinId,ULONG ulNodeType,IUnknown **ppControlNode) {
+    return This->lpVtbl->GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeTypes_Proxy(
+    IBDA_Topology* This,
+    ULONG *pulcNodeTypes,
+    ULONG ulcNodeTypesMax,
+    ULONG rgulNodeTypes[]);
+void __RPC_STUB IBDA_Topology_GetNodeTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeDescriptors_Proxy(
+    IBDA_Topology* This,
+    ULONG *ulcNodeDescriptors,
+    ULONG ulcNodeDescriptorsMax,
+    BDANODE_DESCRIPTOR rgNodeDescriptors[]);
+void __RPC_STUB IBDA_Topology_GetNodeDescriptors_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeInterfaces_Proxy(
+    IBDA_Topology* This,
+    ULONG ulNodeType,
+    ULONG *pulcInterfaces,
+    ULONG ulcInterfacesMax,
+    GUID rgguidInterfaces[]);
+void __RPC_STUB IBDA_Topology_GetNodeInterfaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetPinTypes_Proxy(
+    IBDA_Topology* This,
+    ULONG *pulcPinTypes,
+    ULONG ulcPinTypesMax,
+    ULONG rgulPinTypes[]);
+void __RPC_STUB IBDA_Topology_GetPinTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetTemplateConnections_Proxy(
+    IBDA_Topology* This,
+    ULONG *pulcConnections,
+    ULONG ulcConnectionsMax,
+    BDA_TEMPLATE_CONNECTION rgConnections[]);
+void __RPC_STUB IBDA_Topology_GetTemplateConnections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_CreatePin_Proxy(
+    IBDA_Topology* This,
+    ULONG ulPinType,
+    ULONG *pulPinId);
+void __RPC_STUB IBDA_Topology_CreatePin_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_DeletePin_Proxy(
+    IBDA_Topology* This,
+    ULONG ulPinId);
+void __RPC_STUB IBDA_Topology_DeletePin_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_SetMediaType_Proxy(
+    IBDA_Topology* This,
+    ULONG ulPinId,
+    AM_MEDIA_TYPE *pMediaType);
+void __RPC_STUB IBDA_Topology_SetMediaType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_SetMedium_Proxy(
+    IBDA_Topology* This,
+    ULONG ulPinId,
+    REGPINMEDIUM *pMedium);
+void __RPC_STUB IBDA_Topology_SetMedium_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_CreateTopology_Proxy(
+    IBDA_Topology* This,
+    ULONG ulInputPinId,
+    ULONG ulOutputPinId);
+void __RPC_STUB IBDA_Topology_CreateTopology_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Topology_GetControlNode_Proxy(
+    IBDA_Topology* This,
+    ULONG ulInputPinId,
+    ULONG ulOutputPinId,
+    ULONG ulNodeType,
+    IUnknown **ppControlNode);
+void __RPC_STUB IBDA_Topology_GetControlNode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_Topology_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_VoidTransform interface
+ */
+#ifndef __IBDA_VoidTransform_INTERFACE_DEFINED__
+#define __IBDA_VoidTransform_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_VoidTransform, 0x71985f46, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("71985f46-1ca1-11d3-9cc8-00c04f7971e0")
+IBDA_VoidTransform : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Start(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stop(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_VoidTransform, 0x71985f46, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_VoidTransformVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_VoidTransform* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_VoidTransform* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_VoidTransform* This);
+
+    /*** IBDA_VoidTransform methods ***/
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IBDA_VoidTransform* This);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IBDA_VoidTransform* This);
+
+    END_INTERFACE
+} IBDA_VoidTransformVtbl;
+interface IBDA_VoidTransform {
+    CONST_VTBL IBDA_VoidTransformVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_VoidTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_VoidTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_VoidTransform_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_VoidTransform methods ***/
+#define IBDA_VoidTransform_Start(This) (This)->lpVtbl->Start(This)
+#define IBDA_VoidTransform_Stop(This) (This)->lpVtbl->Stop(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_VoidTransform_QueryInterface(IBDA_VoidTransform* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_VoidTransform_AddRef(IBDA_VoidTransform* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_VoidTransform_Release(IBDA_VoidTransform* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_VoidTransform methods ***/
+static FORCEINLINE HRESULT IBDA_VoidTransform_Start(IBDA_VoidTransform* This) {
+    return This->lpVtbl->Start(This);
+}
+static FORCEINLINE HRESULT IBDA_VoidTransform_Stop(IBDA_VoidTransform* This) {
+    return This->lpVtbl->Stop(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_VoidTransform_Start_Proxy(
+    IBDA_VoidTransform* This);
+void __RPC_STUB IBDA_VoidTransform_Start_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_VoidTransform_Stop_Proxy(
+    IBDA_VoidTransform* This);
+void __RPC_STUB IBDA_VoidTransform_Stop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_VoidTransform_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_NullTransform interface
+ */
+#ifndef __IBDA_NullTransform_INTERFACE_DEFINED__
+#define __IBDA_NullTransform_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_NullTransform, 0xddf15b0d, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ddf15b0d-bd25-11d2-9ca0-00c04f7971e0")
+IBDA_NullTransform : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Start(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stop(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_NullTransform, 0xddf15b0d, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_NullTransformVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_NullTransform* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_NullTransform* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_NullTransform* This);
+
+    /*** IBDA_NullTransform methods ***/
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IBDA_NullTransform* This);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IBDA_NullTransform* This);
+
+    END_INTERFACE
+} IBDA_NullTransformVtbl;
+interface IBDA_NullTransform {
+    CONST_VTBL IBDA_NullTransformVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_NullTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_NullTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_NullTransform_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_NullTransform methods ***/
+#define IBDA_NullTransform_Start(This) (This)->lpVtbl->Start(This)
+#define IBDA_NullTransform_Stop(This) (This)->lpVtbl->Stop(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_NullTransform_QueryInterface(IBDA_NullTransform* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_NullTransform_AddRef(IBDA_NullTransform* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_NullTransform_Release(IBDA_NullTransform* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_NullTransform methods ***/
+static FORCEINLINE HRESULT IBDA_NullTransform_Start(IBDA_NullTransform* This) {
+    return This->lpVtbl->Start(This);
+}
+static FORCEINLINE HRESULT IBDA_NullTransform_Stop(IBDA_NullTransform* This) {
+    return This->lpVtbl->Stop(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_NullTransform_Start_Proxy(
+    IBDA_NullTransform* This);
+void __RPC_STUB IBDA_NullTransform_Start_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NullTransform_Stop_Proxy(
+    IBDA_NullTransform* This);
+void __RPC_STUB IBDA_NullTransform_Stop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_NullTransform_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_FrequencyFilter interface
+ */
+#ifndef __IBDA_FrequencyFilter_INTERFACE_DEFINED__
+#define __IBDA_FrequencyFilter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_FrequencyFilter, 0x71985f47, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("71985f47-1ca1-11d3-9cc8-00c04f7971e0")
+IBDA_FrequencyFilter : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_Autotune(
+        ULONG ulTransponder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Autotune(
+        ULONG *pulTransponder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Frequency(
+        ULONG ulFrequency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Frequency(
+        ULONG *pulFrequency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Polarity(
+        Polarisation Polarity) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Polarity(
+        Polarisation *pPolarity) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Range(
+        ULONG ulRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Range(
+        ULONG *pulRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Bandwidth(
+        ULONG ulBandwidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Bandwidth(
+        ULONG *pulBandwidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(
+        ULONG ulMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(
+        ULONG *pulMultiplier) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_FrequencyFilter, 0x71985f47, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_FrequencyFilterVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_FrequencyFilter* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_FrequencyFilter* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_FrequencyFilter* This);
+
+    /*** IBDA_FrequencyFilter methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_Autotune)(
+        IBDA_FrequencyFilter* This,
+        ULONG ulTransponder);
+
+    HRESULT (STDMETHODCALLTYPE *get_Autotune)(
+        IBDA_FrequencyFilter* This,
+        ULONG *pulTransponder);
+
+    HRESULT (STDMETHODCALLTYPE *put_Frequency)(
+        IBDA_FrequencyFilter* This,
+        ULONG ulFrequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_Frequency)(
+        IBDA_FrequencyFilter* This,
+        ULONG *pulFrequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_Polarity)(
+        IBDA_FrequencyFilter* This,
+        Polarisation Polarity);
+
+    HRESULT (STDMETHODCALLTYPE *get_Polarity)(
+        IBDA_FrequencyFilter* This,
+        Polarisation *pPolarity);
+
+    HRESULT (STDMETHODCALLTYPE *put_Range)(
+        IBDA_FrequencyFilter* This,
+        ULONG ulRange);
+
+    HRESULT (STDMETHODCALLTYPE *get_Range)(
+        IBDA_FrequencyFilter* This,
+        ULONG *pulRange);
+
+    HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
+        IBDA_FrequencyFilter* This,
+        ULONG ulBandwidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
+        IBDA_FrequencyFilter* This,
+        ULONG *pulBandwidth);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMultiplier)(
+        IBDA_FrequencyFilter* This,
+        ULONG ulMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMultiplier)(
+        IBDA_FrequencyFilter* This,
+        ULONG *pulMultiplier);
+
+    END_INTERFACE
+} IBDA_FrequencyFilterVtbl;
+interface IBDA_FrequencyFilter {
+    CONST_VTBL IBDA_FrequencyFilterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_FrequencyFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_FrequencyFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_FrequencyFilter_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_FrequencyFilter methods ***/
+#define IBDA_FrequencyFilter_put_Autotune(This,ulTransponder) (This)->lpVtbl->put_Autotune(This,ulTransponder)
+#define IBDA_FrequencyFilter_get_Autotune(This,pulTransponder) (This)->lpVtbl->get_Autotune(This,pulTransponder)
+#define IBDA_FrequencyFilter_put_Frequency(This,ulFrequency) (This)->lpVtbl->put_Frequency(This,ulFrequency)
+#define IBDA_FrequencyFilter_get_Frequency(This,pulFrequency) (This)->lpVtbl->get_Frequency(This,pulFrequency)
+#define IBDA_FrequencyFilter_put_Polarity(This,Polarity) (This)->lpVtbl->put_Polarity(This,Polarity)
+#define IBDA_FrequencyFilter_get_Polarity(This,pPolarity) (This)->lpVtbl->get_Polarity(This,pPolarity)
+#define IBDA_FrequencyFilter_put_Range(This,ulRange) (This)->lpVtbl->put_Range(This,ulRange)
+#define IBDA_FrequencyFilter_get_Range(This,pulRange) (This)->lpVtbl->get_Range(This,pulRange)
+#define IBDA_FrequencyFilter_put_Bandwidth(This,ulBandwidth) (This)->lpVtbl->put_Bandwidth(This,ulBandwidth)
+#define IBDA_FrequencyFilter_get_Bandwidth(This,pulBandwidth) (This)->lpVtbl->get_Bandwidth(This,pulBandwidth)
+#define IBDA_FrequencyFilter_put_FrequencyMultiplier(This,ulMultiplier) (This)->lpVtbl->put_FrequencyMultiplier(This,ulMultiplier)
+#define IBDA_FrequencyFilter_get_FrequencyMultiplier(This,pulMultiplier) (This)->lpVtbl->get_FrequencyMultiplier(This,pulMultiplier)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_QueryInterface(IBDA_FrequencyFilter* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_FrequencyFilter_AddRef(IBDA_FrequencyFilter* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_FrequencyFilter_Release(IBDA_FrequencyFilter* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_FrequencyFilter methods ***/
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Autotune(IBDA_FrequencyFilter* This,ULONG ulTransponder) {
+    return This->lpVtbl->put_Autotune(This,ulTransponder);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Autotune(IBDA_FrequencyFilter* This,ULONG *pulTransponder) {
+    return This->lpVtbl->get_Autotune(This,pulTransponder);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Frequency(IBDA_FrequencyFilter* This,ULONG ulFrequency) {
+    return This->lpVtbl->put_Frequency(This,ulFrequency);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Frequency(IBDA_FrequencyFilter* This,ULONG *pulFrequency) {
+    return This->lpVtbl->get_Frequency(This,pulFrequency);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Polarity(IBDA_FrequencyFilter* This,Polarisation Polarity) {
+    return This->lpVtbl->put_Polarity(This,Polarity);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Polarity(IBDA_FrequencyFilter* This,Polarisation *pPolarity) {
+    return This->lpVtbl->get_Polarity(This,pPolarity);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Range(IBDA_FrequencyFilter* This,ULONG ulRange) {
+    return This->lpVtbl->put_Range(This,ulRange);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Range(IBDA_FrequencyFilter* This,ULONG *pulRange) {
+    return This->lpVtbl->get_Range(This,pulRange);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Bandwidth(IBDA_FrequencyFilter* This,ULONG ulBandwidth) {
+    return This->lpVtbl->put_Bandwidth(This,ulBandwidth);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Bandwidth(IBDA_FrequencyFilter* This,ULONG *pulBandwidth) {
+    return This->lpVtbl->get_Bandwidth(This,pulBandwidth);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_FrequencyMultiplier(IBDA_FrequencyFilter* This,ULONG ulMultiplier) {
+    return This->lpVtbl->put_FrequencyMultiplier(This,ulMultiplier);
+}
+static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_FrequencyMultiplier(IBDA_FrequencyFilter* This,ULONG *pulMultiplier) {
+    return This->lpVtbl->get_FrequencyMultiplier(This,pulMultiplier);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Autotune_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG ulTransponder);
+void __RPC_STUB IBDA_FrequencyFilter_put_Autotune_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Autotune_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG *pulTransponder);
+void __RPC_STUB IBDA_FrequencyFilter_get_Autotune_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Frequency_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG ulFrequency);
+void __RPC_STUB IBDA_FrequencyFilter_put_Frequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Frequency_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG *pulFrequency);
+void __RPC_STUB IBDA_FrequencyFilter_get_Frequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Polarity_Proxy(
+    IBDA_FrequencyFilter* This,
+    Polarisation Polarity);
+void __RPC_STUB IBDA_FrequencyFilter_put_Polarity_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Polarity_Proxy(
+    IBDA_FrequencyFilter* This,
+    Polarisation *pPolarity);
+void __RPC_STUB IBDA_FrequencyFilter_get_Polarity_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Range_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG ulRange);
+void __RPC_STUB IBDA_FrequencyFilter_put_Range_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Range_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG *pulRange);
+void __RPC_STUB IBDA_FrequencyFilter_get_Range_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Bandwidth_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG ulBandwidth);
+void __RPC_STUB IBDA_FrequencyFilter_put_Bandwidth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Bandwidth_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG *pulBandwidth);
+void __RPC_STUB IBDA_FrequencyFilter_get_Bandwidth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_FrequencyMultiplier_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG ulMultiplier);
+void __RPC_STUB IBDA_FrequencyFilter_put_FrequencyMultiplier_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_FrequencyMultiplier_Proxy(
+    IBDA_FrequencyFilter* This,
+    ULONG *pulMultiplier);
+void __RPC_STUB IBDA_FrequencyFilter_get_FrequencyMultiplier_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_FrequencyFilter_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_LNBInfo interface
+ */
+#ifndef __IBDA_LNBInfo_INTERFACE_DEFINED__
+#define __IBDA_LNBInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_LNBInfo, 0x992cf102, 0x49f9, 0x4719, 0xa6,0x64, 0xc4,0xf2,0x3e,0x24,0x08,0xf4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("992cf102-49f9-4719-a664-c4f23e2408f4")
+IBDA_LNBInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_LocalOscilatorFrequencyLowBand(
+        ULONG ulLOFLow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalOscilatorFrequencyLowBand(
+        ULONG *pulLOFLow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LocalOscilatorFrequencyHighBand(
+        ULONG ulLOFHigh) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalOscilatorFrequencyHighBand(
+        ULONG *pulLOFHigh) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_HighLowSwitchFrequency(
+        ULONG ulSwitchFrequency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HighLowSwitchFrequency(
+        ULONG *pulSwitchFrequency) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_LNBInfo, 0x992cf102, 0x49f9, 0x4719, 0xa6,0x64, 0xc4,0xf2,0x3e,0x24,0x08,0xf4)
+#endif
+#else
+typedef struct IBDA_LNBInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_LNBInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_LNBInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_LNBInfo* This);
+
+    /*** IBDA_LNBInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyLowBand)(
+        IBDA_LNBInfo* This,
+        ULONG ulLOFLow);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyLowBand)(
+        IBDA_LNBInfo* This,
+        ULONG *pulLOFLow);
+
+    HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyHighBand)(
+        IBDA_LNBInfo* This,
+        ULONG ulLOFHigh);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyHighBand)(
+        IBDA_LNBInfo* This,
+        ULONG *pulLOFHigh);
+
+    HRESULT (STDMETHODCALLTYPE *put_HighLowSwitchFrequency)(
+        IBDA_LNBInfo* This,
+        ULONG ulSwitchFrequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_HighLowSwitchFrequency)(
+        IBDA_LNBInfo* This,
+        ULONG *pulSwitchFrequency);
+
+    END_INTERFACE
+} IBDA_LNBInfoVtbl;
+interface IBDA_LNBInfo {
+    CONST_VTBL IBDA_LNBInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_LNBInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_LNBInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_LNBInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_LNBInfo methods ***/
+#define IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand(This,ulLOFLow) (This)->lpVtbl->put_LocalOscilatorFrequencyLowBand(This,ulLOFLow)
+#define IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand(This,pulLOFLow) (This)->lpVtbl->get_LocalOscilatorFrequencyLowBand(This,pulLOFLow)
+#define IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh) (This)->lpVtbl->put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh)
+#define IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh) (This)->lpVtbl->get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh)
+#define IBDA_LNBInfo_put_HighLowSwitchFrequency(This,ulSwitchFrequency) (This)->lpVtbl->put_HighLowSwitchFrequency(This,ulSwitchFrequency)
+#define IBDA_LNBInfo_get_HighLowSwitchFrequency(This,pulSwitchFrequency) (This)->lpVtbl->get_HighLowSwitchFrequency(This,pulSwitchFrequency)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_LNBInfo_QueryInterface(IBDA_LNBInfo* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_LNBInfo_AddRef(IBDA_LNBInfo* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_LNBInfo_Release(IBDA_LNBInfo* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_LNBInfo methods ***/
+static FORCEINLINE HRESULT IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand(IBDA_LNBInfo* This,ULONG ulLOFLow) {
+    return This->lpVtbl->put_LocalOscilatorFrequencyLowBand(This,ulLOFLow);
+}
+static FORCEINLINE HRESULT IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand(IBDA_LNBInfo* This,ULONG *pulLOFLow) {
+    return This->lpVtbl->get_LocalOscilatorFrequencyLowBand(This,pulLOFLow);
+}
+static FORCEINLINE HRESULT IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand(IBDA_LNBInfo* This,ULONG ulLOFHigh) {
+    return This->lpVtbl->put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh);
+}
+static FORCEINLINE HRESULT IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand(IBDA_LNBInfo* This,ULONG *pulLOFHigh) {
+    return This->lpVtbl->get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh);
+}
+static FORCEINLINE HRESULT IBDA_LNBInfo_put_HighLowSwitchFrequency(IBDA_LNBInfo* This,ULONG ulSwitchFrequency) {
+    return This->lpVtbl->put_HighLowSwitchFrequency(This,ulSwitchFrequency);
+}
+static FORCEINLINE HRESULT IBDA_LNBInfo_get_HighLowSwitchFrequency(IBDA_LNBInfo* This,ULONG *pulSwitchFrequency) {
+    return This->lpVtbl->get_HighLowSwitchFrequency(This,pulSwitchFrequency);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG ulLOFLow);
+void __RPC_STUB IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG *pulLOFLow);
+void __RPC_STUB IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG ulLOFHigh);
+void __RPC_STUB IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG *pulLOFHigh);
+void __RPC_STUB IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_HighLowSwitchFrequency_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG ulSwitchFrequency);
+void __RPC_STUB IBDA_LNBInfo_put_HighLowSwitchFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_HighLowSwitchFrequency_Proxy(
+    IBDA_LNBInfo* This,
+    ULONG *pulSwitchFrequency);
+void __RPC_STUB IBDA_LNBInfo_get_HighLowSwitchFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_LNBInfo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DiseqCommand interface
+ */
+#ifndef __IBDA_DiseqCommand_INTERFACE_DEFINED__
+#define __IBDA_DiseqCommand_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DiseqCommand, 0xf84e2ab0, 0x3c6b, 0x45e3, 0xa0,0xfc, 0x86,0x69,0xd4,0xb8,0x1f,0x11);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f84e2ab0-3c6b-45e3-a0fc-8669d4b81f11")
+IBDA_DiseqCommand : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_EnableDiseqCommands(
+        BOOLEAN bEnable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DiseqLNBSource(
+        ULONG ulLNBSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DiseqUseToneBurst(
+        BOOLEAN bUseToneBurst) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DiseqRepeats(
+        ULONG ulRepeats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DiseqSendCommand(
+        ULONG ulRequestId,
+        ULONG ulcbCommandLen,
+        BYTE *pbCommand) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DiseqResponse(
+        ULONG ulRequestId,
+        ULONG *pulcbResponseLen,
+        BYTE pbResponse[]) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DiseqCommand, 0xf84e2ab0, 0x3c6b, 0x45e3, 0xa0,0xfc, 0x86,0x69,0xd4,0xb8,0x1f,0x11)
+#endif
+#else
+typedef struct IBDA_DiseqCommandVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DiseqCommand* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DiseqCommand* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DiseqCommand* This);
+
+    /*** IBDA_DiseqCommand methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_EnableDiseqCommands)(
+        IBDA_DiseqCommand* This,
+        BOOLEAN bEnable);
+
+    HRESULT (STDMETHODCALLTYPE *put_DiseqLNBSource)(
+        IBDA_DiseqCommand* This,
+        ULONG ulLNBSource);
+
+    HRESULT (STDMETHODCALLTYPE *put_DiseqUseToneBurst)(
+        IBDA_DiseqCommand* This,
+        BOOLEAN bUseToneBurst);
+
+    HRESULT (STDMETHODCALLTYPE *put_DiseqRepeats)(
+        IBDA_DiseqCommand* This,
+        ULONG ulRepeats);
+
+    HRESULT (STDMETHODCALLTYPE *put_DiseqSendCommand)(
+        IBDA_DiseqCommand* This,
+        ULONG ulRequestId,
+        ULONG ulcbCommandLen,
+        BYTE *pbCommand);
+
+    HRESULT (STDMETHODCALLTYPE *get_DiseqResponse)(
+        IBDA_DiseqCommand* This,
+        ULONG ulRequestId,
+        ULONG *pulcbResponseLen,
+        BYTE pbResponse[]);
+
+    END_INTERFACE
+} IBDA_DiseqCommandVtbl;
+interface IBDA_DiseqCommand {
+    CONST_VTBL IBDA_DiseqCommandVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DiseqCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DiseqCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DiseqCommand_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DiseqCommand methods ***/
+#define IBDA_DiseqCommand_put_EnableDiseqCommands(This,bEnable) (This)->lpVtbl->put_EnableDiseqCommands(This,bEnable)
+#define IBDA_DiseqCommand_put_DiseqLNBSource(This,ulLNBSource) (This)->lpVtbl->put_DiseqLNBSource(This,ulLNBSource)
+#define IBDA_DiseqCommand_put_DiseqUseToneBurst(This,bUseToneBurst) (This)->lpVtbl->put_DiseqUseToneBurst(This,bUseToneBurst)
+#define IBDA_DiseqCommand_put_DiseqRepeats(This,ulRepeats) (This)->lpVtbl->put_DiseqRepeats(This,ulRepeats)
+#define IBDA_DiseqCommand_put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand) (This)->lpVtbl->put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand)
+#define IBDA_DiseqCommand_get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse) (This)->lpVtbl->get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DiseqCommand_QueryInterface(IBDA_DiseqCommand* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DiseqCommand_AddRef(IBDA_DiseqCommand* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DiseqCommand_Release(IBDA_DiseqCommand* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DiseqCommand methods ***/
+static FORCEINLINE HRESULT IBDA_DiseqCommand_put_EnableDiseqCommands(IBDA_DiseqCommand* This,BOOLEAN bEnable) {
+    return This->lpVtbl->put_EnableDiseqCommands(This,bEnable);
+}
+static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqLNBSource(IBDA_DiseqCommand* This,ULONG ulLNBSource) {
+    return This->lpVtbl->put_DiseqLNBSource(This,ulLNBSource);
+}
+static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqUseToneBurst(IBDA_DiseqCommand* This,BOOLEAN bUseToneBurst) {
+    return This->lpVtbl->put_DiseqUseToneBurst(This,bUseToneBurst);
+}
+static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqRepeats(IBDA_DiseqCommand* This,ULONG ulRepeats) {
+    return This->lpVtbl->put_DiseqRepeats(This,ulRepeats);
+}
+static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqSendCommand(IBDA_DiseqCommand* This,ULONG ulRequestId,ULONG ulcbCommandLen,BYTE *pbCommand) {
+    return This->lpVtbl->put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand);
+}
+static FORCEINLINE HRESULT IBDA_DiseqCommand_get_DiseqResponse(IBDA_DiseqCommand* This,ULONG ulRequestId,ULONG *pulcbResponseLen,BYTE pbResponse[]) {
+    return This->lpVtbl->get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_EnableDiseqCommands_Proxy(
+    IBDA_DiseqCommand* This,
+    BOOLEAN bEnable);
+void __RPC_STUB IBDA_DiseqCommand_put_EnableDiseqCommands_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqLNBSource_Proxy(
+    IBDA_DiseqCommand* This,
+    ULONG ulLNBSource);
+void __RPC_STUB IBDA_DiseqCommand_put_DiseqLNBSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqUseToneBurst_Proxy(
+    IBDA_DiseqCommand* This,
+    BOOLEAN bUseToneBurst);
+void __RPC_STUB IBDA_DiseqCommand_put_DiseqUseToneBurst_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqRepeats_Proxy(
+    IBDA_DiseqCommand* This,
+    ULONG ulRepeats);
+void __RPC_STUB IBDA_DiseqCommand_put_DiseqRepeats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqSendCommand_Proxy(
+    IBDA_DiseqCommand* This,
+    ULONG ulRequestId,
+    ULONG ulcbCommandLen,
+    BYTE *pbCommand);
+void __RPC_STUB IBDA_DiseqCommand_put_DiseqSendCommand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_get_DiseqResponse_Proxy(
+    IBDA_DiseqCommand* This,
+    ULONG ulRequestId,
+    ULONG *pulcbResponseLen,
+    BYTE pbResponse[]);
+void __RPC_STUB IBDA_DiseqCommand_get_DiseqResponse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DiseqCommand_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_AutoDemodulate interface
+ */
+#ifndef __IBDA_AutoDemodulate_INTERFACE_DEFINED__
+#define __IBDA_AutoDemodulate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_AutoDemodulate, 0xddf15b12, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ddf15b12-bd25-11d2-9ca0-00c04f7971e0")
+IBDA_AutoDemodulate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_AutoDemodulate(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_AutoDemodulate, 0xddf15b12, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
+#endif
+#else
+typedef struct IBDA_AutoDemodulateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_AutoDemodulate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_AutoDemodulate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_AutoDemodulate* This);
+
+    /*** IBDA_AutoDemodulate methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
+        IBDA_AutoDemodulate* This);
+
+    END_INTERFACE
+} IBDA_AutoDemodulateVtbl;
+interface IBDA_AutoDemodulate {
+    CONST_VTBL IBDA_AutoDemodulateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_AutoDemodulate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_AutoDemodulate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_AutoDemodulate_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_AutoDemodulate methods ***/
+#define IBDA_AutoDemodulate_put_AutoDemodulate(This) (This)->lpVtbl->put_AutoDemodulate(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_AutoDemodulate_QueryInterface(IBDA_AutoDemodulate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_AutoDemodulate_AddRef(IBDA_AutoDemodulate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_AutoDemodulate_Release(IBDA_AutoDemodulate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_AutoDemodulate methods ***/
+static FORCEINLINE HRESULT IBDA_AutoDemodulate_put_AutoDemodulate(IBDA_AutoDemodulate* This) {
+    return This->lpVtbl->put_AutoDemodulate(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulate_put_AutoDemodulate_Proxy(
+    IBDA_AutoDemodulate* This);
+void __RPC_STUB IBDA_AutoDemodulate_put_AutoDemodulate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_AutoDemodulate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_AutoDemodulateEx interface
+ */
+#ifndef __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__
+#define __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_AutoDemodulateEx, 0x34518d13, 0x1182, 0x48e6, 0xb2,0x8f, 0xb2,0x49,0x87,0x78,0x73,0x26);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("34518d13-1182-48e6-b28f-b24987787326")
+IBDA_AutoDemodulateEx : public IBDA_AutoDemodulate
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SupportedDeviceNodeTypes(
+        ULONG ulcDeviceNodeTypesMax,
+        ULONG *pulcDeviceNodeTypes,
+        GUID *pguidDeviceNodeTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SupportedVideoFormats(
+        ULONG *pulAMTunerModeType,
+        ULONG *pulAnalogVideoStandard) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AuxInputCount(
+        ULONG *pulCompositeCount,
+        ULONG *pulSvideoCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_AutoDemodulateEx, 0x34518d13, 0x1182, 0x48e6, 0xb2,0x8f, 0xb2,0x49,0x87,0x78,0x73,0x26)
+#endif
+#else
+typedef struct IBDA_AutoDemodulateExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_AutoDemodulateEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_AutoDemodulateEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_AutoDemodulateEx* This);
+
+    /*** IBDA_AutoDemodulate methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
+        IBDA_AutoDemodulateEx* This);
+
+    /*** IBDA_AutoDemodulateEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SupportedDeviceNodeTypes)(
+        IBDA_AutoDemodulateEx* This,
+        ULONG ulcDeviceNodeTypesMax,
+        ULONG *pulcDeviceNodeTypes,
+        GUID *pguidDeviceNodeTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_SupportedVideoFormats)(
+        IBDA_AutoDemodulateEx* This,
+        ULONG *pulAMTunerModeType,
+        ULONG *pulAnalogVideoStandard);
+
+    HRESULT (STDMETHODCALLTYPE *get_AuxInputCount)(
+        IBDA_AutoDemodulateEx* This,
+        ULONG *pulCompositeCount,
+        ULONG *pulSvideoCount);
+
+    END_INTERFACE
+} IBDA_AutoDemodulateExVtbl;
+interface IBDA_AutoDemodulateEx {
+    CONST_VTBL IBDA_AutoDemodulateExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_AutoDemodulateEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_AutoDemodulateEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_AutoDemodulateEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_AutoDemodulate methods ***/
+#define IBDA_AutoDemodulateEx_put_AutoDemodulate(This) (This)->lpVtbl->put_AutoDemodulate(This)
+/*** IBDA_AutoDemodulateEx methods ***/
+#define IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes) (This)->lpVtbl->get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes)
+#define IBDA_AutoDemodulateEx_get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard) (This)->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard)
+#define IBDA_AutoDemodulateEx_get_AuxInputCount(This,pulCompositeCount,pulSvideoCount) (This)->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_QueryInterface(IBDA_AutoDemodulateEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_AutoDemodulateEx_AddRef(IBDA_AutoDemodulateEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_AutoDemodulateEx_Release(IBDA_AutoDemodulateEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_AutoDemodulate methods ***/
+static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_put_AutoDemodulate(IBDA_AutoDemodulateEx* This) {
+    return This->lpVtbl->put_AutoDemodulate(This);
+}
+/*** IBDA_AutoDemodulateEx methods ***/
+static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes(IBDA_AutoDemodulateEx* This,ULONG ulcDeviceNodeTypesMax,ULONG *pulcDeviceNodeTypes,GUID *pguidDeviceNodeTypes) {
+    return This->lpVtbl->get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes);
+}
+static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_SupportedVideoFormats(IBDA_AutoDemodulateEx* This,ULONG *pulAMTunerModeType,ULONG *pulAnalogVideoStandard) {
+    return This->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard);
+}
+static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_AuxInputCount(IBDA_AutoDemodulateEx* This,ULONG *pulCompositeCount,ULONG *pulSvideoCount) {
+    return This->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes_Proxy(
+    IBDA_AutoDemodulateEx* This,
+    ULONG ulcDeviceNodeTypesMax,
+    ULONG *pulcDeviceNodeTypes,
+    GUID *pguidDeviceNodeTypes);
+void __RPC_STUB IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_SupportedVideoFormats_Proxy(
+    IBDA_AutoDemodulateEx* This,
+    ULONG *pulAMTunerModeType,
+    ULONG *pulAnalogVideoStandard);
+void __RPC_STUB IBDA_AutoDemodulateEx_get_SupportedVideoFormats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_AuxInputCount_Proxy(
+    IBDA_AutoDemodulateEx* This,
+    ULONG *pulCompositeCount,
+    ULONG *pulSvideoCount);
+void __RPC_STUB IBDA_AutoDemodulateEx_get_AuxInputCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DigitalDemodulator interface
+ */
+#ifndef __IBDA_DigitalDemodulator_INTERFACE_DEFINED__
+#define __IBDA_DigitalDemodulator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DigitalDemodulator, 0xef30f379, 0x985b, 0x4d10, 0xb6,0x40, 0xa7,0x9d,0x5e,0x04,0xe1,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ef30f379-985b-4d10-b640-a79d5e04e1e0")
+IBDA_DigitalDemodulator : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE put_ModulationType(
+        ModulationType *pModulationType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ModulationType(
+        ModulationType *pModulationType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InnerFECMethod(
+        FECMethod *pFECMethod) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InnerFECMethod(
+        FECMethod *pFECMethod) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InnerFECRate(
+        BinaryConvolutionCodeRate *pFECRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InnerFECRate(
+        BinaryConvolutionCodeRate *pFECRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OuterFECMethod(
+        FECMethod *pFECMethod) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OuterFECMethod(
+        FECMethod *pFECMethod) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OuterFECRate(
+        BinaryConvolutionCodeRate *pFECRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OuterFECRate(
+        BinaryConvolutionCodeRate *pFECRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SymbolRate(
+        ULONG *pSymbolRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SymbolRate(
+        ULONG *pSymbolRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SpectralInversion(
+        SpectralInversion *pSpectralInversion) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SpectralInversion(
+        SpectralInversion *pSpectralInversion) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DigitalDemodulator, 0xef30f379, 0x985b, 0x4d10, 0xb6,0x40, 0xa7,0x9d,0x5e,0x04,0xe1,0xe0)
+#endif
+#else
+typedef struct IBDA_DigitalDemodulatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DigitalDemodulator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DigitalDemodulator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DigitalDemodulator* This);
+
+    /*** IBDA_DigitalDemodulator methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
+        IBDA_DigitalDemodulator* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
+        IBDA_DigitalDemodulator* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
+        IBDA_DigitalDemodulator* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
+        IBDA_DigitalDemodulator* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IBDA_DigitalDemodulator* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IBDA_DigitalDemodulator* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
+        IBDA_DigitalDemodulator* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
+        IBDA_DigitalDemodulator* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IBDA_DigitalDemodulator* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IBDA_DigitalDemodulator* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IBDA_DigitalDemodulator* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IBDA_DigitalDemodulator* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
+        IBDA_DigitalDemodulator* This,
+        SpectralInversion *pSpectralInversion);
+
+    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
+        IBDA_DigitalDemodulator* This,
+        SpectralInversion *pSpectralInversion);
+
+    END_INTERFACE
+} IBDA_DigitalDemodulatorVtbl;
+interface IBDA_DigitalDemodulator {
+    CONST_VTBL IBDA_DigitalDemodulatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DigitalDemodulator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DigitalDemodulator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DigitalDemodulator_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DigitalDemodulator methods ***/
+#define IBDA_DigitalDemodulator_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
+#define IBDA_DigitalDemodulator_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_QueryInterface(IBDA_DigitalDemodulator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator_AddRef(IBDA_DigitalDemodulator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator_Release(IBDA_DigitalDemodulator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DigitalDemodulator methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_ModulationType(IBDA_DigitalDemodulator* This,ModulationType *pModulationType) {
+    return This->lpVtbl->put_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_ModulationType(IBDA_DigitalDemodulator* This,ModulationType *pModulationType) {
+    return This->lpVtbl->get_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_InnerFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_InnerFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_InnerFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_InnerFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_OuterFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_OuterFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_OuterFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_OuterFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_SymbolRate(IBDA_DigitalDemodulator* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_SymbolRate(IBDA_DigitalDemodulator* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_SpectralInversion(IBDA_DigitalDemodulator* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_SpectralInversion(IBDA_DigitalDemodulator* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_ModulationType_Proxy(
+    IBDA_DigitalDemodulator* This,
+    ModulationType *pModulationType);
+void __RPC_STUB IBDA_DigitalDemodulator_put_ModulationType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_ModulationType_Proxy(
+    IBDA_DigitalDemodulator* This,
+    ModulationType *pModulationType);
+void __RPC_STUB IBDA_DigitalDemodulator_get_ModulationType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_InnerFECMethod_Proxy(
+    IBDA_DigitalDemodulator* This,
+    FECMethod *pFECMethod);
+void __RPC_STUB IBDA_DigitalDemodulator_put_InnerFECMethod_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_InnerFECMethod_Proxy(
+    IBDA_DigitalDemodulator* This,
+    FECMethod *pFECMethod);
+void __RPC_STUB IBDA_DigitalDemodulator_get_InnerFECMethod_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_InnerFECRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    BinaryConvolutionCodeRate *pFECRate);
+void __RPC_STUB IBDA_DigitalDemodulator_put_InnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_InnerFECRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    BinaryConvolutionCodeRate *pFECRate);
+void __RPC_STUB IBDA_DigitalDemodulator_get_InnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_OuterFECMethod_Proxy(
+    IBDA_DigitalDemodulator* This,
+    FECMethod *pFECMethod);
+void __RPC_STUB IBDA_DigitalDemodulator_put_OuterFECMethod_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_OuterFECMethod_Proxy(
+    IBDA_DigitalDemodulator* This,
+    FECMethod *pFECMethod);
+void __RPC_STUB IBDA_DigitalDemodulator_get_OuterFECMethod_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_OuterFECRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    BinaryConvolutionCodeRate *pFECRate);
+void __RPC_STUB IBDA_DigitalDemodulator_put_OuterFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_OuterFECRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    BinaryConvolutionCodeRate *pFECRate);
+void __RPC_STUB IBDA_DigitalDemodulator_get_OuterFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_SymbolRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    ULONG *pSymbolRate);
+void __RPC_STUB IBDA_DigitalDemodulator_put_SymbolRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_SymbolRate_Proxy(
+    IBDA_DigitalDemodulator* This,
+    ULONG *pSymbolRate);
+void __RPC_STUB IBDA_DigitalDemodulator_get_SymbolRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_SpectralInversion_Proxy(
+    IBDA_DigitalDemodulator* This,
+    SpectralInversion *pSpectralInversion);
+void __RPC_STUB IBDA_DigitalDemodulator_put_SpectralInversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_SpectralInversion_Proxy(
+    IBDA_DigitalDemodulator* This,
+    SpectralInversion *pSpectralInversion);
+void __RPC_STUB IBDA_DigitalDemodulator_get_SpectralInversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DigitalDemodulator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DigitalDemodulator2 interface
+ */
+#ifndef __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__
+#define __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DigitalDemodulator2, 0x525ed3ee, 0x5cf3, 0x4e1e, 0x9a,0x06, 0x53,0x68,0xa8,0x4f,0x9a,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("525ed3ee-5cf3-4e1e-9a06-5368a84f9a6e")
+IBDA_DigitalDemodulator2 : public IBDA_DigitalDemodulator
+{
+    virtual HRESULT STDMETHODCALLTYPE put_GuardInterval(
+        GuardInterval *pGuardInterval) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_GuardInterval(
+        GuardInterval *pGuardInterval) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TransmissionMode(
+        TransmissionMode *pTransmissionMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TransmissionMode(
+        TransmissionMode *pTransmissionMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_RollOff(
+        RollOff *pRollOff) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RollOff(
+        RollOff *pRollOff) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Pilot(
+        Pilot *pPilot) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Pilot(
+        Pilot *pPilot) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DigitalDemodulator2, 0x525ed3ee, 0x5cf3, 0x4e1e, 0x9a,0x06, 0x53,0x68,0xa8,0x4f,0x9a,0x6e)
+#endif
+#else
+typedef struct IBDA_DigitalDemodulator2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DigitalDemodulator2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DigitalDemodulator2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DigitalDemodulator2* This);
+
+    /*** IBDA_DigitalDemodulator methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
+        IBDA_DigitalDemodulator2* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
+        IBDA_DigitalDemodulator2* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
+        IBDA_DigitalDemodulator2* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
+        IBDA_DigitalDemodulator2* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IBDA_DigitalDemodulator2* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IBDA_DigitalDemodulator2* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
+        IBDA_DigitalDemodulator2* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
+        IBDA_DigitalDemodulator2* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IBDA_DigitalDemodulator2* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IBDA_DigitalDemodulator2* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IBDA_DigitalDemodulator2* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IBDA_DigitalDemodulator2* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
+        IBDA_DigitalDemodulator2* This,
+        SpectralInversion *pSpectralInversion);
+
+    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
+        IBDA_DigitalDemodulator2* This,
+        SpectralInversion *pSpectralInversion);
+
+    /*** IBDA_DigitalDemodulator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
+        IBDA_DigitalDemodulator2* This,
+        GuardInterval *pGuardInterval);
+
+    HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
+        IBDA_DigitalDemodulator2* This,
+        GuardInterval *pGuardInterval);
+
+    HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
+        IBDA_DigitalDemodulator2* This,
+        TransmissionMode *pTransmissionMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
+        IBDA_DigitalDemodulator2* This,
+        TransmissionMode *pTransmissionMode);
+
+    HRESULT (STDMETHODCALLTYPE *put_RollOff)(
+        IBDA_DigitalDemodulator2* This,
+        RollOff *pRollOff);
+
+    HRESULT (STDMETHODCALLTYPE *get_RollOff)(
+        IBDA_DigitalDemodulator2* This,
+        RollOff *pRollOff);
+
+    HRESULT (STDMETHODCALLTYPE *put_Pilot)(
+        IBDA_DigitalDemodulator2* This,
+        Pilot *pPilot);
+
+    HRESULT (STDMETHODCALLTYPE *get_Pilot)(
+        IBDA_DigitalDemodulator2* This,
+        Pilot *pPilot);
+
+    END_INTERFACE
+} IBDA_DigitalDemodulator2Vtbl;
+interface IBDA_DigitalDemodulator2 {
+    CONST_VTBL IBDA_DigitalDemodulator2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DigitalDemodulator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DigitalDemodulator2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DigitalDemodulator2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DigitalDemodulator methods ***/
+#define IBDA_DigitalDemodulator2_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator2_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator2_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator2_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator2_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator2_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator2_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator2_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator2_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator2_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator2_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator2_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator2_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
+#define IBDA_DigitalDemodulator2_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
+/*** IBDA_DigitalDemodulator2 methods ***/
+#define IBDA_DigitalDemodulator2_put_GuardInterval(This,pGuardInterval) (This)->lpVtbl->put_GuardInterval(This,pGuardInterval)
+#define IBDA_DigitalDemodulator2_get_GuardInterval(This,pGuardInterval) (This)->lpVtbl->get_GuardInterval(This,pGuardInterval)
+#define IBDA_DigitalDemodulator2_put_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->put_TransmissionMode(This,pTransmissionMode)
+#define IBDA_DigitalDemodulator2_get_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->get_TransmissionMode(This,pTransmissionMode)
+#define IBDA_DigitalDemodulator2_put_RollOff(This,pRollOff) (This)->lpVtbl->put_RollOff(This,pRollOff)
+#define IBDA_DigitalDemodulator2_get_RollOff(This,pRollOff) (This)->lpVtbl->get_RollOff(This,pRollOff)
+#define IBDA_DigitalDemodulator2_put_Pilot(This,pPilot) (This)->lpVtbl->put_Pilot(This,pPilot)
+#define IBDA_DigitalDemodulator2_get_Pilot(This,pPilot) (This)->lpVtbl->get_Pilot(This,pPilot)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_QueryInterface(IBDA_DigitalDemodulator2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator2_AddRef(IBDA_DigitalDemodulator2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator2_Release(IBDA_DigitalDemodulator2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DigitalDemodulator methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_ModulationType(IBDA_DigitalDemodulator2* This,ModulationType *pModulationType) {
+    return This->lpVtbl->put_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_ModulationType(IBDA_DigitalDemodulator2* This,ModulationType *pModulationType) {
+    return This->lpVtbl->get_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_InnerFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_InnerFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_InnerFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_InnerFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_OuterFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_OuterFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_OuterFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_OuterFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_SymbolRate(IBDA_DigitalDemodulator2* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_SymbolRate(IBDA_DigitalDemodulator2* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_SpectralInversion(IBDA_DigitalDemodulator2* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_SpectralInversion(IBDA_DigitalDemodulator2* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
+}
+/*** IBDA_DigitalDemodulator2 methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_GuardInterval(IBDA_DigitalDemodulator2* This,GuardInterval *pGuardInterval) {
+    return This->lpVtbl->put_GuardInterval(This,pGuardInterval);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_GuardInterval(IBDA_DigitalDemodulator2* This,GuardInterval *pGuardInterval) {
+    return This->lpVtbl->get_GuardInterval(This,pGuardInterval);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_TransmissionMode(IBDA_DigitalDemodulator2* This,TransmissionMode *pTransmissionMode) {
+    return This->lpVtbl->put_TransmissionMode(This,pTransmissionMode);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_TransmissionMode(IBDA_DigitalDemodulator2* This,TransmissionMode *pTransmissionMode) {
+    return This->lpVtbl->get_TransmissionMode(This,pTransmissionMode);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_RollOff(IBDA_DigitalDemodulator2* This,RollOff *pRollOff) {
+    return This->lpVtbl->put_RollOff(This,pRollOff);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_RollOff(IBDA_DigitalDemodulator2* This,RollOff *pRollOff) {
+    return This->lpVtbl->get_RollOff(This,pRollOff);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_Pilot(IBDA_DigitalDemodulator2* This,Pilot *pPilot) {
+    return This->lpVtbl->put_Pilot(This,pPilot);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_Pilot(IBDA_DigitalDemodulator2* This,Pilot *pPilot) {
+    return This->lpVtbl->get_Pilot(This,pPilot);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_GuardInterval_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    GuardInterval *pGuardInterval);
+void __RPC_STUB IBDA_DigitalDemodulator2_put_GuardInterval_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_GuardInterval_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    GuardInterval *pGuardInterval);
+void __RPC_STUB IBDA_DigitalDemodulator2_get_GuardInterval_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_TransmissionMode_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    TransmissionMode *pTransmissionMode);
+void __RPC_STUB IBDA_DigitalDemodulator2_put_TransmissionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_TransmissionMode_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    TransmissionMode *pTransmissionMode);
+void __RPC_STUB IBDA_DigitalDemodulator2_get_TransmissionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_RollOff_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    RollOff *pRollOff);
+void __RPC_STUB IBDA_DigitalDemodulator2_put_RollOff_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_RollOff_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    RollOff *pRollOff);
+void __RPC_STUB IBDA_DigitalDemodulator2_get_RollOff_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_Pilot_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    Pilot *pPilot);
+void __RPC_STUB IBDA_DigitalDemodulator2_put_Pilot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_Pilot_Proxy(
+    IBDA_DigitalDemodulator2* This,
+    Pilot *pPilot);
+void __RPC_STUB IBDA_DigitalDemodulator2_get_Pilot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DigitalDemodulator3 interface
+ */
+#ifndef __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__
+#define __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DigitalDemodulator3, 0x13f19604, 0x7d32, 0x4359, 0x93,0xa2, 0xa0,0x52,0x05,0xd9,0x0a,0xc9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("13f19604-7d32-4359-93a2-a05205d90ac9")
+IBDA_DigitalDemodulator3 : public IBDA_DigitalDemodulator2
+{
+    virtual HRESULT STDMETHODCALLTYPE put_SignalTimeouts(
+        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalTimeouts(
+        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PLPNumber(
+        ULONG *pPLPNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PLPNumber(
+        ULONG *pPLPNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DigitalDemodulator3, 0x13f19604, 0x7d32, 0x4359, 0x93,0xa2, 0xa0,0x52,0x05,0xd9,0x0a,0xc9)
+#endif
+#else
+typedef struct IBDA_DigitalDemodulator3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DigitalDemodulator3* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DigitalDemodulator3* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DigitalDemodulator3* This);
+
+    /*** IBDA_DigitalDemodulator methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
+        IBDA_DigitalDemodulator3* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
+        IBDA_DigitalDemodulator3* This,
+        ModulationType *pModulationType);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
+        IBDA_DigitalDemodulator3* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
+        IBDA_DigitalDemodulator3* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IBDA_DigitalDemodulator3* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IBDA_DigitalDemodulator3* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
+        IBDA_DigitalDemodulator3* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
+        IBDA_DigitalDemodulator3* This,
+        FECMethod *pFECMethod);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IBDA_DigitalDemodulator3* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IBDA_DigitalDemodulator3* This,
+        BinaryConvolutionCodeRate *pFECRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IBDA_DigitalDemodulator3* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IBDA_DigitalDemodulator3* This,
+        ULONG *pSymbolRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
+        IBDA_DigitalDemodulator3* This,
+        SpectralInversion *pSpectralInversion);
+
+    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
+        IBDA_DigitalDemodulator3* This,
+        SpectralInversion *pSpectralInversion);
+
+    /*** IBDA_DigitalDemodulator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
+        IBDA_DigitalDemodulator3* This,
+        GuardInterval *pGuardInterval);
+
+    HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
+        IBDA_DigitalDemodulator3* This,
+        GuardInterval *pGuardInterval);
+
+    HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
+        IBDA_DigitalDemodulator3* This,
+        TransmissionMode *pTransmissionMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
+        IBDA_DigitalDemodulator3* This,
+        TransmissionMode *pTransmissionMode);
+
+    HRESULT (STDMETHODCALLTYPE *put_RollOff)(
+        IBDA_DigitalDemodulator3* This,
+        RollOff *pRollOff);
+
+    HRESULT (STDMETHODCALLTYPE *get_RollOff)(
+        IBDA_DigitalDemodulator3* This,
+        RollOff *pRollOff);
+
+    HRESULT (STDMETHODCALLTYPE *put_Pilot)(
+        IBDA_DigitalDemodulator3* This,
+        Pilot *pPilot);
+
+    HRESULT (STDMETHODCALLTYPE *get_Pilot)(
+        IBDA_DigitalDemodulator3* This,
+        Pilot *pPilot);
+
+    /*** IBDA_DigitalDemodulator3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_SignalTimeouts)(
+        IBDA_DigitalDemodulator3* This,
+        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalTimeouts)(
+        IBDA_DigitalDemodulator3* This,
+        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
+
+    HRESULT (STDMETHODCALLTYPE *put_PLPNumber)(
+        IBDA_DigitalDemodulator3* This,
+        ULONG *pPLPNumber);
+
+    HRESULT (STDMETHODCALLTYPE *get_PLPNumber)(
+        IBDA_DigitalDemodulator3* This,
+        ULONG *pPLPNumber);
+
+    END_INTERFACE
+} IBDA_DigitalDemodulator3Vtbl;
+interface IBDA_DigitalDemodulator3 {
+    CONST_VTBL IBDA_DigitalDemodulator3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DigitalDemodulator3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DigitalDemodulator3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DigitalDemodulator3_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DigitalDemodulator methods ***/
+#define IBDA_DigitalDemodulator3_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator3_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
+#define IBDA_DigitalDemodulator3_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator3_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator3_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator3_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator3_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator3_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
+#define IBDA_DigitalDemodulator3_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator3_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
+#define IBDA_DigitalDemodulator3_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator3_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
+#define IBDA_DigitalDemodulator3_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
+#define IBDA_DigitalDemodulator3_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
+/*** IBDA_DigitalDemodulator2 methods ***/
+#define IBDA_DigitalDemodulator3_put_GuardInterval(This,pGuardInterval) (This)->lpVtbl->put_GuardInterval(This,pGuardInterval)
+#define IBDA_DigitalDemodulator3_get_GuardInterval(This,pGuardInterval) (This)->lpVtbl->get_GuardInterval(This,pGuardInterval)
+#define IBDA_DigitalDemodulator3_put_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->put_TransmissionMode(This,pTransmissionMode)
+#define IBDA_DigitalDemodulator3_get_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->get_TransmissionMode(This,pTransmissionMode)
+#define IBDA_DigitalDemodulator3_put_RollOff(This,pRollOff) (This)->lpVtbl->put_RollOff(This,pRollOff)
+#define IBDA_DigitalDemodulator3_get_RollOff(This,pRollOff) (This)->lpVtbl->get_RollOff(This,pRollOff)
+#define IBDA_DigitalDemodulator3_put_Pilot(This,pPilot) (This)->lpVtbl->put_Pilot(This,pPilot)
+#define IBDA_DigitalDemodulator3_get_Pilot(This,pPilot) (This)->lpVtbl->get_Pilot(This,pPilot)
+/*** IBDA_DigitalDemodulator3 methods ***/
+#define IBDA_DigitalDemodulator3_put_SignalTimeouts(This,pSignalTimeouts) (This)->lpVtbl->put_SignalTimeouts(This,pSignalTimeouts)
+#define IBDA_DigitalDemodulator3_get_SignalTimeouts(This,pSignalTimeouts) (This)->lpVtbl->get_SignalTimeouts(This,pSignalTimeouts)
+#define IBDA_DigitalDemodulator3_put_PLPNumber(This,pPLPNumber) (This)->lpVtbl->put_PLPNumber(This,pPLPNumber)
+#define IBDA_DigitalDemodulator3_get_PLPNumber(This,pPLPNumber) (This)->lpVtbl->get_PLPNumber(This,pPLPNumber)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_QueryInterface(IBDA_DigitalDemodulator3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator3_AddRef(IBDA_DigitalDemodulator3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DigitalDemodulator3_Release(IBDA_DigitalDemodulator3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DigitalDemodulator methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_ModulationType(IBDA_DigitalDemodulator3* This,ModulationType *pModulationType) {
+    return This->lpVtbl->put_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_ModulationType(IBDA_DigitalDemodulator3* This,ModulationType *pModulationType) {
+    return This->lpVtbl->get_ModulationType(This,pModulationType);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_InnerFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_InnerFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_InnerFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_InnerFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_OuterFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_OuterFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
+    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_OuterFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_OuterFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
+    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SymbolRate(IBDA_DigitalDemodulator3* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SymbolRate(IBDA_DigitalDemodulator3* This,ULONG *pSymbolRate) {
+    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SpectralInversion(IBDA_DigitalDemodulator3* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SpectralInversion(IBDA_DigitalDemodulator3* This,SpectralInversion *pSpectralInversion) {
+    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
+}
+/*** IBDA_DigitalDemodulator2 methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_GuardInterval(IBDA_DigitalDemodulator3* This,GuardInterval *pGuardInterval) {
+    return This->lpVtbl->put_GuardInterval(This,pGuardInterval);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_GuardInterval(IBDA_DigitalDemodulator3* This,GuardInterval *pGuardInterval) {
+    return This->lpVtbl->get_GuardInterval(This,pGuardInterval);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_TransmissionMode(IBDA_DigitalDemodulator3* This,TransmissionMode *pTransmissionMode) {
+    return This->lpVtbl->put_TransmissionMode(This,pTransmissionMode);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_TransmissionMode(IBDA_DigitalDemodulator3* This,TransmissionMode *pTransmissionMode) {
+    return This->lpVtbl->get_TransmissionMode(This,pTransmissionMode);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_RollOff(IBDA_DigitalDemodulator3* This,RollOff *pRollOff) {
+    return This->lpVtbl->put_RollOff(This,pRollOff);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_RollOff(IBDA_DigitalDemodulator3* This,RollOff *pRollOff) {
+    return This->lpVtbl->get_RollOff(This,pRollOff);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_Pilot(IBDA_DigitalDemodulator3* This,Pilot *pPilot) {
+    return This->lpVtbl->put_Pilot(This,pPilot);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_Pilot(IBDA_DigitalDemodulator3* This,Pilot *pPilot) {
+    return This->lpVtbl->get_Pilot(This,pPilot);
+}
+/*** IBDA_DigitalDemodulator3 methods ***/
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SignalTimeouts(IBDA_DigitalDemodulator3* This,BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) {
+    return This->lpVtbl->put_SignalTimeouts(This,pSignalTimeouts);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SignalTimeouts(IBDA_DigitalDemodulator3* This,BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) {
+    return This->lpVtbl->get_SignalTimeouts(This,pSignalTimeouts);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_PLPNumber(IBDA_DigitalDemodulator3* This,ULONG *pPLPNumber) {
+    return This->lpVtbl->put_PLPNumber(This,pPLPNumber);
+}
+static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_PLPNumber(IBDA_DigitalDemodulator3* This,ULONG *pPLPNumber) {
+    return This->lpVtbl->get_PLPNumber(This,pPLPNumber);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_put_SignalTimeouts_Proxy(
+    IBDA_DigitalDemodulator3* This,
+    BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
+void __RPC_STUB IBDA_DigitalDemodulator3_put_SignalTimeouts_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_get_SignalTimeouts_Proxy(
+    IBDA_DigitalDemodulator3* This,
+    BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
+void __RPC_STUB IBDA_DigitalDemodulator3_get_SignalTimeouts_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_put_PLPNumber_Proxy(
+    IBDA_DigitalDemodulator3* This,
+    ULONG *pPLPNumber);
+void __RPC_STUB IBDA_DigitalDemodulator3_put_PLPNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_get_PLPNumber_Proxy(
+    IBDA_DigitalDemodulator3* This,
+    ULONG *pPLPNumber);
+void __RPC_STUB IBDA_DigitalDemodulator3_get_PLPNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ICCSubStreamFiltering interface
+ */
+#ifndef __ICCSubStreamFiltering_INTERFACE_DEFINED__
+#define __ICCSubStreamFiltering_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICCSubStreamFiltering, 0x4b2bd7ea, 0x8347, 0x467b, 0x8d,0xbf, 0x62,0xf7,0x84,0x92,0x9c,0xc3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4b2bd7ea-8347-467b-8dbf-62f784929cc3")
+ICCSubStreamFiltering : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SubstreamTypes(
+        LONG *pTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SubstreamTypes(
+        LONG Types) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ICCSubStreamFiltering, 0x4b2bd7ea, 0x8347, 0x467b, 0x8d,0xbf, 0x62,0xf7,0x84,0x92,0x9c,0xc3)
+#endif
+#else
+typedef struct ICCSubStreamFilteringVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICCSubStreamFiltering* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICCSubStreamFiltering* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICCSubStreamFiltering* This);
+
+    /*** ICCSubStreamFiltering methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SubstreamTypes)(
+        ICCSubStreamFiltering* This,
+        LONG *pTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_SubstreamTypes)(
+        ICCSubStreamFiltering* This,
+        LONG Types);
+
+    END_INTERFACE
+} ICCSubStreamFilteringVtbl;
+interface ICCSubStreamFiltering {
+    CONST_VTBL ICCSubStreamFilteringVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ICCSubStreamFiltering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICCSubStreamFiltering_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICCSubStreamFiltering_Release(This) (This)->lpVtbl->Release(This)
+/*** ICCSubStreamFiltering methods ***/
+#define ICCSubStreamFiltering_get_SubstreamTypes(This,pTypes) (This)->lpVtbl->get_SubstreamTypes(This,pTypes)
+#define ICCSubStreamFiltering_put_SubstreamTypes(This,Types) (This)->lpVtbl->put_SubstreamTypes(This,Types)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ICCSubStreamFiltering_QueryInterface(ICCSubStreamFiltering* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ICCSubStreamFiltering_AddRef(ICCSubStreamFiltering* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ICCSubStreamFiltering_Release(ICCSubStreamFiltering* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ICCSubStreamFiltering methods ***/
+static FORCEINLINE HRESULT ICCSubStreamFiltering_get_SubstreamTypes(ICCSubStreamFiltering* This,LONG *pTypes) {
+    return This->lpVtbl->get_SubstreamTypes(This,pTypes);
+}
+static FORCEINLINE HRESULT ICCSubStreamFiltering_put_SubstreamTypes(ICCSubStreamFiltering* This,LONG Types) {
+    return This->lpVtbl->put_SubstreamTypes(This,Types);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICCSubStreamFiltering_get_SubstreamTypes_Proxy(
+    ICCSubStreamFiltering* This,
+    LONG *pTypes);
+void __RPC_STUB ICCSubStreamFiltering_get_SubstreamTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICCSubStreamFiltering_put_SubstreamTypes_Proxy(
+    ICCSubStreamFiltering* This,
+    LONG Types);
+void __RPC_STUB ICCSubStreamFiltering_put_SubstreamTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICCSubStreamFiltering_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_IPSinkControl interface
+ */
+#ifndef __IBDA_IPSinkControl_INTERFACE_DEFINED__
+#define __IBDA_IPSinkControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_IPSinkControl, 0x3f4dc8e2, 0x4050, 0x11d3, 0x8f,0x4b, 0x00,0xc0,0x4f,0x79,0x71,0xe2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3f4dc8e2-4050-11d3-8f4b-00c04f7971e2")
+IBDA_IPSinkControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
+        ULONG *pulcbSize,
+        BYTE **pbBuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdapterIPAddress(
+        ULONG *pulcbSize,
+        BYTE **pbBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_IPSinkControl, 0x3f4dc8e2, 0x4050, 0x11d3, 0x8f,0x4b, 0x00,0xc0,0x4f,0x79,0x71,0xe2)
+#endif
+#else
+typedef struct IBDA_IPSinkControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_IPSinkControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_IPSinkControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_IPSinkControl* This);
+
+    /*** IBDA_IPSinkControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
+        IBDA_IPSinkControl* This,
+        ULONG *pulcbSize,
+        BYTE **pbBuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdapterIPAddress)(
+        IBDA_IPSinkControl* This,
+        ULONG *pulcbSize,
+        BYTE **pbBuffer);
+
+    END_INTERFACE
+} IBDA_IPSinkControlVtbl;
+interface IBDA_IPSinkControl {
+    CONST_VTBL IBDA_IPSinkControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_IPSinkControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_IPSinkControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_IPSinkControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_IPSinkControl methods ***/
+#define IBDA_IPSinkControl_GetMulticastList(This,pulcbSize,pbBuffer) (This)->lpVtbl->GetMulticastList(This,pulcbSize,pbBuffer)
+#define IBDA_IPSinkControl_GetAdapterIPAddress(This,pulcbSize,pbBuffer) (This)->lpVtbl->GetAdapterIPAddress(This,pulcbSize,pbBuffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_IPSinkControl_QueryInterface(IBDA_IPSinkControl* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_IPSinkControl_AddRef(IBDA_IPSinkControl* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_IPSinkControl_Release(IBDA_IPSinkControl* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_IPSinkControl methods ***/
+static FORCEINLINE HRESULT IBDA_IPSinkControl_GetMulticastList(IBDA_IPSinkControl* This,ULONG *pulcbSize,BYTE **pbBuffer) {
+    return This->lpVtbl->GetMulticastList(This,pulcbSize,pbBuffer);
+}
+static FORCEINLINE HRESULT IBDA_IPSinkControl_GetAdapterIPAddress(IBDA_IPSinkControl* This,ULONG *pulcbSize,BYTE **pbBuffer) {
+    return This->lpVtbl->GetAdapterIPAddress(This,pulcbSize,pbBuffer);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_IPSinkControl_GetMulticastList_Proxy(
+    IBDA_IPSinkControl* This,
+    ULONG *pulcbSize,
+    BYTE **pbBuffer);
+void __RPC_STUB IBDA_IPSinkControl_GetMulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPSinkControl_GetAdapterIPAddress_Proxy(
+    IBDA_IPSinkControl* This,
+    ULONG *pulcbSize,
+    BYTE **pbBuffer);
+void __RPC_STUB IBDA_IPSinkControl_GetAdapterIPAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_IPSinkControl_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_IPSinkInfo interface
+ */
+#ifndef __IBDA_IPSinkInfo_INTERFACE_DEFINED__
+#define __IBDA_IPSinkInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_IPSinkInfo, 0xa750108f, 0x492e, 0x4d51, 0x95,0xf7, 0x64,0x9b,0x23,0xff,0x7a,0xd7);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a750108f-492e-4d51-95f7-649b23ff7ad7")
+IBDA_IPSinkInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MulticastList(
+        ULONG *pulcbAddresses,
+        BYTE **ppbAddressList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AdapterIPAddress(
+        BSTR *pbstrBuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AdapterDescription(
+        BSTR *pbstrBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_IPSinkInfo, 0xa750108f, 0x492e, 0x4d51, 0x95,0xf7, 0x64,0x9b,0x23,0xff,0x7a,0xd7)
+#endif
+#else
+typedef struct IBDA_IPSinkInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_IPSinkInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_IPSinkInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_IPSinkInfo* This);
+
+    /*** IBDA_IPSinkInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MulticastList)(
+        IBDA_IPSinkInfo* This,
+        ULONG *pulcbAddresses,
+        BYTE **ppbAddressList);
+
+    HRESULT (STDMETHODCALLTYPE *get_AdapterIPAddress)(
+        IBDA_IPSinkInfo* This,
+        BSTR *pbstrBuffer);
+
+    HRESULT (STDMETHODCALLTYPE *get_AdapterDescription)(
+        IBDA_IPSinkInfo* This,
+        BSTR *pbstrBuffer);
+
+    END_INTERFACE
+} IBDA_IPSinkInfoVtbl;
+interface IBDA_IPSinkInfo {
+    CONST_VTBL IBDA_IPSinkInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_IPSinkInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_IPSinkInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_IPSinkInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_IPSinkInfo methods ***/
+#define IBDA_IPSinkInfo_get_MulticastList(This,pulcbAddresses,ppbAddressList) (This)->lpVtbl->get_MulticastList(This,pulcbAddresses,ppbAddressList)
+#define IBDA_IPSinkInfo_get_AdapterIPAddress(This,pbstrBuffer) (This)->lpVtbl->get_AdapterIPAddress(This,pbstrBuffer)
+#define IBDA_IPSinkInfo_get_AdapterDescription(This,pbstrBuffer) (This)->lpVtbl->get_AdapterDescription(This,pbstrBuffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_IPSinkInfo_QueryInterface(IBDA_IPSinkInfo* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_IPSinkInfo_AddRef(IBDA_IPSinkInfo* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_IPSinkInfo_Release(IBDA_IPSinkInfo* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_IPSinkInfo methods ***/
+static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_MulticastList(IBDA_IPSinkInfo* This,ULONG *pulcbAddresses,BYTE **ppbAddressList) {
+    return This->lpVtbl->get_MulticastList(This,pulcbAddresses,ppbAddressList);
+}
+static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_AdapterIPAddress(IBDA_IPSinkInfo* This,BSTR *pbstrBuffer) {
+    return This->lpVtbl->get_AdapterIPAddress(This,pbstrBuffer);
+}
+static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_AdapterDescription(IBDA_IPSinkInfo* This,BSTR *pbstrBuffer) {
+    return This->lpVtbl->get_AdapterDescription(This,pbstrBuffer);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_MulticastList_Proxy(
+    IBDA_IPSinkInfo* This,
+    ULONG *pulcbAddresses,
+    BYTE **ppbAddressList);
+void __RPC_STUB IBDA_IPSinkInfo_get_MulticastList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_AdapterIPAddress_Proxy(
+    IBDA_IPSinkInfo* This,
+    BSTR *pbstrBuffer);
+void __RPC_STUB IBDA_IPSinkInfo_get_AdapterIPAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_AdapterDescription_Proxy(
+    IBDA_IPSinkInfo* This,
+    BSTR *pbstrBuffer);
+void __RPC_STUB IBDA_IPSinkInfo_get_AdapterDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_IPSinkInfo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumPIDMap interface
+ */
+#ifndef __IEnumPIDMap_INTERFACE_DEFINED__
+#define __IEnumPIDMap_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumPIDMap, 0xafb6c2a2, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("afb6c2a2-2c41-11d3-8a60-0000f81e0e4a")
+IEnumPIDMap : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG cRequest,
+        PID_MAP *pPIDMap,
+        ULONG *pcReceived) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG cRecords) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumPIDMap **ppIEnumPIDMap) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumPIDMap, 0xafb6c2a2, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a)
+#endif
+#else
+typedef struct IEnumPIDMapVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumPIDMap* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumPIDMap* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumPIDMap* This);
+
+    /*** IEnumPIDMap methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumPIDMap* This,
+        ULONG cRequest,
+        PID_MAP *pPIDMap,
+        ULONG *pcReceived);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumPIDMap* This,
+        ULONG cRecords);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumPIDMap* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumPIDMap* This,
+        IEnumPIDMap **ppIEnumPIDMap);
+
+    END_INTERFACE
+} IEnumPIDMapVtbl;
+interface IEnumPIDMap {
+    CONST_VTBL IEnumPIDMapVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumPIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumPIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumPIDMap_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumPIDMap methods ***/
+#define IEnumPIDMap_Next(This,cRequest,pPIDMap,pcReceived) (This)->lpVtbl->Next(This,cRequest,pPIDMap,pcReceived)
+#define IEnumPIDMap_Skip(This,cRecords) (This)->lpVtbl->Skip(This,cRecords)
+#define IEnumPIDMap_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumPIDMap_Clone(This,ppIEnumPIDMap) (This)->lpVtbl->Clone(This,ppIEnumPIDMap)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumPIDMap_QueryInterface(IEnumPIDMap* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumPIDMap_AddRef(IEnumPIDMap* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumPIDMap_Release(IEnumPIDMap* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumPIDMap methods ***/
+static FORCEINLINE HRESULT IEnumPIDMap_Next(IEnumPIDMap* This,ULONG cRequest,PID_MAP *pPIDMap,ULONG *pcReceived) {
+    return This->lpVtbl->Next(This,cRequest,pPIDMap,pcReceived);
+}
+static FORCEINLINE HRESULT IEnumPIDMap_Skip(IEnumPIDMap* This,ULONG cRecords) {
+    return This->lpVtbl->Skip(This,cRecords);
+}
+static FORCEINLINE HRESULT IEnumPIDMap_Reset(IEnumPIDMap* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumPIDMap_Clone(IEnumPIDMap* This,IEnumPIDMap **ppIEnumPIDMap) {
+    return This->lpVtbl->Clone(This,ppIEnumPIDMap);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumPIDMap_Next_Proxy(
+    IEnumPIDMap* This,
+    ULONG cRequest,
+    PID_MAP *pPIDMap,
+    ULONG *pcReceived);
+void __RPC_STUB IEnumPIDMap_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumPIDMap_Skip_Proxy(
+    IEnumPIDMap* This,
+    ULONG cRecords);
+void __RPC_STUB IEnumPIDMap_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumPIDMap_Reset_Proxy(
+    IEnumPIDMap* This);
+void __RPC_STUB IEnumPIDMap_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumPIDMap_Clone_Proxy(
+    IEnumPIDMap* This,
+    IEnumPIDMap **ppIEnumPIDMap);
+void __RPC_STUB IEnumPIDMap_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumPIDMap_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2PIDMap interface
+ */
+#ifndef __IMPEG2PIDMap_INTERFACE_DEFINED__
+#define __IMPEG2PIDMap_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2PIDMap, 0xafb6c2a1, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("afb6c2a1-2c41-11d3-8a60-0000f81e0e4a")
+IMPEG2PIDMap : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE MapPID(
+        ULONG culPID,
+        ULONG *pulPID,
+        MEDIA_SAMPLE_CONTENT MediaSampleContent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnmapPID(
+        ULONG culPID,
+        ULONG *pulPID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumPIDMap(
+        IEnumPIDMap **pIEnumPIDMap) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2PIDMap, 0xafb6c2a1, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a)
+#endif
+#else
+typedef struct IMPEG2PIDMapVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2PIDMap* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2PIDMap* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2PIDMap* This);
+
+    /*** IMPEG2PIDMap methods ***/
+    HRESULT (STDMETHODCALLTYPE *MapPID)(
+        IMPEG2PIDMap* This,
+        ULONG culPID,
+        ULONG *pulPID,
+        MEDIA_SAMPLE_CONTENT MediaSampleContent);
+
+    HRESULT (STDMETHODCALLTYPE *UnmapPID)(
+        IMPEG2PIDMap* This,
+        ULONG culPID,
+        ULONG *pulPID);
+
+    HRESULT (STDMETHODCALLTYPE *EnumPIDMap)(
+        IMPEG2PIDMap* This,
+        IEnumPIDMap **pIEnumPIDMap);
+
+    END_INTERFACE
+} IMPEG2PIDMapVtbl;
+interface IMPEG2PIDMap {
+    CONST_VTBL IMPEG2PIDMapVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2PIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2PIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2PIDMap_Release(This) (This)->lpVtbl->Release(This)
+/*** IMPEG2PIDMap methods ***/
+#define IMPEG2PIDMap_MapPID(This,culPID,pulPID,MediaSampleContent) (This)->lpVtbl->MapPID(This,culPID,pulPID,MediaSampleContent)
+#define IMPEG2PIDMap_UnmapPID(This,culPID,pulPID) (This)->lpVtbl->UnmapPID(This,culPID,pulPID)
+#define IMPEG2PIDMap_EnumPIDMap(This,pIEnumPIDMap) (This)->lpVtbl->EnumPIDMap(This,pIEnumPIDMap)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2PIDMap_QueryInterface(IMPEG2PIDMap* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2PIDMap_AddRef(IMPEG2PIDMap* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2PIDMap_Release(IMPEG2PIDMap* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IMPEG2PIDMap methods ***/
+static FORCEINLINE HRESULT IMPEG2PIDMap_MapPID(IMPEG2PIDMap* This,ULONG culPID,ULONG *pulPID,MEDIA_SAMPLE_CONTENT MediaSampleContent) {
+    return This->lpVtbl->MapPID(This,culPID,pulPID,MediaSampleContent);
+}
+static FORCEINLINE HRESULT IMPEG2PIDMap_UnmapPID(IMPEG2PIDMap* This,ULONG culPID,ULONG *pulPID) {
+    return This->lpVtbl->UnmapPID(This,culPID,pulPID);
+}
+static FORCEINLINE HRESULT IMPEG2PIDMap_EnumPIDMap(IMPEG2PIDMap* This,IEnumPIDMap **pIEnumPIDMap) {
+    return This->lpVtbl->EnumPIDMap(This,pIEnumPIDMap);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_MapPID_Proxy(
+    IMPEG2PIDMap* This,
+    ULONG culPID,
+    ULONG *pulPID,
+    MEDIA_SAMPLE_CONTENT MediaSampleContent);
+void __RPC_STUB IMPEG2PIDMap_MapPID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_UnmapPID_Proxy(
+    IMPEG2PIDMap* This,
+    ULONG culPID,
+    ULONG *pulPID);
+void __RPC_STUB IMPEG2PIDMap_UnmapPID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_EnumPIDMap_Proxy(
+    IMPEG2PIDMap* This,
+    IEnumPIDMap **pIEnumPIDMap);
+void __RPC_STUB IMPEG2PIDMap_EnumPIDMap_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMPEG2PIDMap_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFrequencyMap interface
+ */
+#ifndef __IFrequencyMap_INTERFACE_DEFINED__
+#define __IFrequencyMap_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFrequencyMap, 0x06fb45c1, 0x693c, 0x4ea7, 0xb7,0x9f, 0x7a,0x6a,0x54,0xd8,0xde,0xf2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("06fb45c1-693c-4ea7-b79f-7a6a54d8def2")
+IFrequencyMap : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_FrequencyMapping(
+        ULONG *ulCount,
+        ULONG **ppulList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FrequencyMapping(
+        ULONG ulCount,
+        ULONG pList[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CountryCode(
+        ULONG *pulCountryCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CountryCode(
+        ULONG ulCountryCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DefaultFrequencyMapping(
+        ULONG ulCountryCode,
+        ULONG *pulCount,
+        ULONG **ppulList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CountryCodeList(
+        ULONG *pulCount,
+        ULONG **ppulList) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFrequencyMap, 0x06fb45c1, 0x693c, 0x4ea7, 0xb7,0x9f, 0x7a,0x6a,0x54,0xd8,0xde,0xf2)
+#endif
+#else
+typedef struct IFrequencyMapVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFrequencyMap* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFrequencyMap* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFrequencyMap* This);
+
+    /*** IFrequencyMap methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IFrequencyMap* This,
+        ULONG *ulCount,
+        ULONG **ppulList);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IFrequencyMap* This,
+        ULONG ulCount,
+        ULONG pList[]);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IFrequencyMap* This,
+        ULONG *pulCountryCode);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IFrequencyMap* This,
+        ULONG ulCountryCode);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultFrequencyMapping)(
+        IFrequencyMap* This,
+        ULONG ulCountryCode,
+        ULONG *pulCount,
+        ULONG **ppulList);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountryCodeList)(
+        IFrequencyMap* This,
+        ULONG *pulCount,
+        ULONG **ppulList);
+
+    END_INTERFACE
+} IFrequencyMapVtbl;
+interface IFrequencyMap {
+    CONST_VTBL IFrequencyMapVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFrequencyMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFrequencyMap_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFrequencyMap_Release(This) (This)->lpVtbl->Release(This)
+/*** IFrequencyMap methods ***/
+#define IFrequencyMap_get_FrequencyMapping(This,ulCount,ppulList) (This)->lpVtbl->get_FrequencyMapping(This,ulCount,ppulList)
+#define IFrequencyMap_put_FrequencyMapping(This,ulCount,pList) (This)->lpVtbl->put_FrequencyMapping(This,ulCount,pList)
+#define IFrequencyMap_get_CountryCode(This,pulCountryCode) (This)->lpVtbl->get_CountryCode(This,pulCountryCode)
+#define IFrequencyMap_put_CountryCode(This,ulCountryCode) (This)->lpVtbl->put_CountryCode(This,ulCountryCode)
+#define IFrequencyMap_get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList) (This)->lpVtbl->get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList)
+#define IFrequencyMap_get_CountryCodeList(This,pulCount,ppulList) (This)->lpVtbl->get_CountryCodeList(This,pulCount,ppulList)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFrequencyMap_QueryInterface(IFrequencyMap* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFrequencyMap_AddRef(IFrequencyMap* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFrequencyMap_Release(IFrequencyMap* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IFrequencyMap methods ***/
+static FORCEINLINE HRESULT IFrequencyMap_get_FrequencyMapping(IFrequencyMap* This,ULONG *ulCount,ULONG **ppulList) {
+    return This->lpVtbl->get_FrequencyMapping(This,ulCount,ppulList);
+}
+static FORCEINLINE HRESULT IFrequencyMap_put_FrequencyMapping(IFrequencyMap* This,ULONG ulCount,ULONG pList[]) {
+    return This->lpVtbl->put_FrequencyMapping(This,ulCount,pList);
+}
+static FORCEINLINE HRESULT IFrequencyMap_get_CountryCode(IFrequencyMap* This,ULONG *pulCountryCode) {
+    return This->lpVtbl->get_CountryCode(This,pulCountryCode);
+}
+static FORCEINLINE HRESULT IFrequencyMap_put_CountryCode(IFrequencyMap* This,ULONG ulCountryCode) {
+    return This->lpVtbl->put_CountryCode(This,ulCountryCode);
+}
+static FORCEINLINE HRESULT IFrequencyMap_get_DefaultFrequencyMapping(IFrequencyMap* This,ULONG ulCountryCode,ULONG *pulCount,ULONG **ppulList) {
+    return This->lpVtbl->get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList);
+}
+static FORCEINLINE HRESULT IFrequencyMap_get_CountryCodeList(IFrequencyMap* This,ULONG *pulCount,ULONG **ppulList) {
+    return This->lpVtbl->get_CountryCodeList(This,pulCount,ppulList);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFrequencyMap_get_FrequencyMapping_Proxy(
+    IFrequencyMap* This,
+    ULONG *ulCount,
+    ULONG **ppulList);
+void __RPC_STUB IFrequencyMap_get_FrequencyMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFrequencyMap_put_FrequencyMapping_Proxy(
+    IFrequencyMap* This,
+    ULONG ulCount,
+    ULONG pList[]);
+void __RPC_STUB IFrequencyMap_put_FrequencyMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFrequencyMap_get_CountryCode_Proxy(
+    IFrequencyMap* This,
+    ULONG *pulCountryCode);
+void __RPC_STUB IFrequencyMap_get_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFrequencyMap_put_CountryCode_Proxy(
+    IFrequencyMap* This,
+    ULONG ulCountryCode);
+void __RPC_STUB IFrequencyMap_put_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFrequencyMap_get_DefaultFrequencyMapping_Proxy(
+    IFrequencyMap* This,
+    ULONG ulCountryCode,
+    ULONG *pulCount,
+    ULONG **ppulList);
+void __RPC_STUB IFrequencyMap_get_DefaultFrequencyMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFrequencyMap_get_CountryCodeList_Proxy(
+    IFrequencyMap* This,
+    ULONG *pulCount,
+    ULONG **ppulList);
+void __RPC_STUB IFrequencyMap_get_CountryCodeList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFrequencyMap_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_EasMessage interface
+ */
+#ifndef __IBDA_EasMessage_INTERFACE_DEFINED__
+#define __IBDA_EasMessage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_EasMessage, 0xd806973d, 0x3ebe, 0x46de, 0x8f,0xbb, 0x63,0x58,0xfe,0x78,0x42,0x08);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d806973d-3ebe-46de-8fbb-6358fe784208")
+IBDA_EasMessage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_EasMessage(
+        ULONG ulEventID,
+        IUnknown **ppEASObject) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_EasMessage, 0xd806973d, 0x3ebe, 0x46de, 0x8f,0xbb, 0x63,0x58,0xfe,0x78,0x42,0x08)
+#endif
+#else
+typedef struct IBDA_EasMessageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_EasMessage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_EasMessage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_EasMessage* This);
+
+    /*** IBDA_EasMessage methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_EasMessage)(
+        IBDA_EasMessage* This,
+        ULONG ulEventID,
+        IUnknown **ppEASObject);
+
+    END_INTERFACE
+} IBDA_EasMessageVtbl;
+interface IBDA_EasMessage {
+    CONST_VTBL IBDA_EasMessageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_EasMessage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_EasMessage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_EasMessage_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_EasMessage methods ***/
+#define IBDA_EasMessage_get_EasMessage(This,ulEventID,ppEASObject) (This)->lpVtbl->get_EasMessage(This,ulEventID,ppEASObject)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_EasMessage_QueryInterface(IBDA_EasMessage* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_EasMessage_AddRef(IBDA_EasMessage* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_EasMessage_Release(IBDA_EasMessage* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_EasMessage methods ***/
+static FORCEINLINE HRESULT IBDA_EasMessage_get_EasMessage(IBDA_EasMessage* This,ULONG ulEventID,IUnknown **ppEASObject) {
+    return This->lpVtbl->get_EasMessage(This,ulEventID,ppEASObject);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_EasMessage_get_EasMessage_Proxy(
+    IBDA_EasMessage* This,
+    ULONG ulEventID,
+    IUnknown **ppEASObject);
+void __RPC_STUB IBDA_EasMessage_get_EasMessage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_EasMessage_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_TransportStreamInfo interface
+ */
+#ifndef __IBDA_TransportStreamInfo_INTERFACE_DEFINED__
+#define __IBDA_TransportStreamInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_TransportStreamInfo, 0x8e882535, 0x5f86, 0x47ab, 0x86,0xcf, 0xc2,0x81,0xa7,0x2a,0x05,0x49);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8e882535-5f86-47ab-86cf-c281a72a0549")
+IBDA_TransportStreamInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_PatTableTickCount(
+        ULONG *pPatTickCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_TransportStreamInfo, 0x8e882535, 0x5f86, 0x47ab, 0x86,0xcf, 0xc2,0x81,0xa7,0x2a,0x05,0x49)
+#endif
+#else
+typedef struct IBDA_TransportStreamInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_TransportStreamInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_TransportStreamInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_TransportStreamInfo* This);
+
+    /*** IBDA_TransportStreamInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PatTableTickCount)(
+        IBDA_TransportStreamInfo* This,
+        ULONG *pPatTickCount);
+
+    END_INTERFACE
+} IBDA_TransportStreamInfoVtbl;
+interface IBDA_TransportStreamInfo {
+    CONST_VTBL IBDA_TransportStreamInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_TransportStreamInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_TransportStreamInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_TransportStreamInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_TransportStreamInfo methods ***/
+#define IBDA_TransportStreamInfo_get_PatTableTickCount(This,pPatTickCount) (This)->lpVtbl->get_PatTableTickCount(This,pPatTickCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_TransportStreamInfo_QueryInterface(IBDA_TransportStreamInfo* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_TransportStreamInfo_AddRef(IBDA_TransportStreamInfo* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_TransportStreamInfo_Release(IBDA_TransportStreamInfo* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_TransportStreamInfo methods ***/
+static FORCEINLINE HRESULT IBDA_TransportStreamInfo_get_PatTableTickCount(IBDA_TransportStreamInfo* This,ULONG *pPatTickCount) {
+    return This->lpVtbl->get_PatTableTickCount(This,pPatTickCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_TransportStreamInfo_get_PatTableTickCount_Proxy(
+    IBDA_TransportStreamInfo* This,
+    ULONG *pPatTickCount);
+void __RPC_STUB IBDA_TransportStreamInfo_get_PatTableTickCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_TransportStreamInfo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_ConditionalAccess interface
+ */
+#ifndef __IBDA_ConditionalAccess_INTERFACE_DEFINED__
+#define __IBDA_ConditionalAccess_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_ConditionalAccess, 0xcd51f1e0, 0x7be9, 0x4123, 0x84,0x82, 0xa2,0xa7,0x96,0xc0,0xa6,0xb0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cd51f1e0-7be9-4123-8482-a2a796c0a6b0")
+IBDA_ConditionalAccess : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SmartCardStatus(
+        SmartCardStatusType *pCardStatus,
+        SmartCardAssociationType *pCardAssociation,
+        BSTR *pbstrCardError,
+        VARIANT_BOOL *pfOOBLocked) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SmartCardInfo(
+        BSTR *pbstrCardName,
+        BSTR *pbstrCardManufacturer,
+        VARIANT_BOOL *pfDaylightSavings,
+        BYTE *pbyRatingRegion,
+        LONG *plTimeZoneOffsetMinutes,
+        BSTR *pbstrLanguage,
+        EALocationCodeType *pEALocationCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SmartCardApplications(
+        ULONG *pulcApplications,
+        ULONG ulcApplicationsMax,
+        SmartCardApplication rgApplications[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Entitlement(
+        USHORT usVirtualChannel,
+        EntitlementType *pEntitlement) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TuneByChannel(
+        USHORT usVirtualChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetProgram(
+        USHORT usProgramNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddProgram(
+        USHORT usProgramNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveProgram(
+        USHORT usProgramNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetModuleUI(
+        BYTE byDialogNumber,
+        BSTR *pbstrURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InformUIClosed(
+        BYTE byDialogNumber,
+        UICloseReasonType CloseReason) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_ConditionalAccess, 0xcd51f1e0, 0x7be9, 0x4123, 0x84,0x82, 0xa2,0xa7,0x96,0xc0,0xa6,0xb0)
+#endif
+#else
+typedef struct IBDA_ConditionalAccessVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_ConditionalAccess* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_ConditionalAccess* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_ConditionalAccess* This);
+
+    /*** IBDA_ConditionalAccess methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SmartCardStatus)(
+        IBDA_ConditionalAccess* This,
+        SmartCardStatusType *pCardStatus,
+        SmartCardAssociationType *pCardAssociation,
+        BSTR *pbstrCardError,
+        VARIANT_BOOL *pfOOBLocked);
+
+    HRESULT (STDMETHODCALLTYPE *get_SmartCardInfo)(
+        IBDA_ConditionalAccess* This,
+        BSTR *pbstrCardName,
+        BSTR *pbstrCardManufacturer,
+        VARIANT_BOOL *pfDaylightSavings,
+        BYTE *pbyRatingRegion,
+        LONG *plTimeZoneOffsetMinutes,
+        BSTR *pbstrLanguage,
+        EALocationCodeType *pEALocationCode);
+
+    HRESULT (STDMETHODCALLTYPE *get_SmartCardApplications)(
+        IBDA_ConditionalAccess* This,
+        ULONG *pulcApplications,
+        ULONG ulcApplicationsMax,
+        SmartCardApplication rgApplications[]);
+
+    HRESULT (STDMETHODCALLTYPE *get_Entitlement)(
+        IBDA_ConditionalAccess* This,
+        USHORT usVirtualChannel,
+        EntitlementType *pEntitlement);
+
+    HRESULT (STDMETHODCALLTYPE *TuneByChannel)(
+        IBDA_ConditionalAccess* This,
+        USHORT usVirtualChannel);
+
+    HRESULT (STDMETHODCALLTYPE *SetProgram)(
+        IBDA_ConditionalAccess* This,
+        USHORT usProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *AddProgram)(
+        IBDA_ConditionalAccess* This,
+        USHORT usProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveProgram)(
+        IBDA_ConditionalAccess* This,
+        USHORT usProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *GetModuleUI)(
+        IBDA_ConditionalAccess* This,
+        BYTE byDialogNumber,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *InformUIClosed)(
+        IBDA_ConditionalAccess* This,
+        BYTE byDialogNumber,
+        UICloseReasonType CloseReason);
+
+    END_INTERFACE
+} IBDA_ConditionalAccessVtbl;
+interface IBDA_ConditionalAccess {
+    CONST_VTBL IBDA_ConditionalAccessVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_ConditionalAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_ConditionalAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_ConditionalAccess_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_ConditionalAccess methods ***/
+#define IBDA_ConditionalAccess_get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked) (This)->lpVtbl->get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked)
+#define IBDA_ConditionalAccess_get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode) (This)->lpVtbl->get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode)
+#define IBDA_ConditionalAccess_get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications) (This)->lpVtbl->get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications)
+#define IBDA_ConditionalAccess_get_Entitlement(This,usVirtualChannel,pEntitlement) (This)->lpVtbl->get_Entitlement(This,usVirtualChannel,pEntitlement)
+#define IBDA_ConditionalAccess_TuneByChannel(This,usVirtualChannel) (This)->lpVtbl->TuneByChannel(This,usVirtualChannel)
+#define IBDA_ConditionalAccess_SetProgram(This,usProgramNumber) (This)->lpVtbl->SetProgram(This,usProgramNumber)
+#define IBDA_ConditionalAccess_AddProgram(This,usProgramNumber) (This)->lpVtbl->AddProgram(This,usProgramNumber)
+#define IBDA_ConditionalAccess_RemoveProgram(This,usProgramNumber) (This)->lpVtbl->RemoveProgram(This,usProgramNumber)
+#define IBDA_ConditionalAccess_GetModuleUI(This,byDialogNumber,pbstrURL) (This)->lpVtbl->GetModuleUI(This,byDialogNumber,pbstrURL)
+#define IBDA_ConditionalAccess_InformUIClosed(This,byDialogNumber,CloseReason) (This)->lpVtbl->InformUIClosed(This,byDialogNumber,CloseReason)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_QueryInterface(IBDA_ConditionalAccess* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_ConditionalAccess_AddRef(IBDA_ConditionalAccess* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_ConditionalAccess_Release(IBDA_ConditionalAccess* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_ConditionalAccess methods ***/
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardStatus(IBDA_ConditionalAccess* This,SmartCardStatusType *pCardStatus,SmartCardAssociationType *pCardAssociation,BSTR *pbstrCardError,VARIANT_BOOL *pfOOBLocked) {
+    return This->lpVtbl->get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardInfo(IBDA_ConditionalAccess* This,BSTR *pbstrCardName,BSTR *pbstrCardManufacturer,VARIANT_BOOL *pfDaylightSavings,BYTE *pbyRatingRegion,LONG *plTimeZoneOffsetMinutes,BSTR *pbstrLanguage,EALocationCodeType *pEALocationCode) {
+    return This->lpVtbl->get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardApplications(IBDA_ConditionalAccess* This,ULONG *pulcApplications,ULONG ulcApplicationsMax,SmartCardApplication rgApplications[]) {
+    return This->lpVtbl->get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_Entitlement(IBDA_ConditionalAccess* This,USHORT usVirtualChannel,EntitlementType *pEntitlement) {
+    return This->lpVtbl->get_Entitlement(This,usVirtualChannel,pEntitlement);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_TuneByChannel(IBDA_ConditionalAccess* This,USHORT usVirtualChannel) {
+    return This->lpVtbl->TuneByChannel(This,usVirtualChannel);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_SetProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
+    return This->lpVtbl->SetProgram(This,usProgramNumber);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_AddProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
+    return This->lpVtbl->AddProgram(This,usProgramNumber);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_RemoveProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
+    return This->lpVtbl->RemoveProgram(This,usProgramNumber);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_GetModuleUI(IBDA_ConditionalAccess* This,BYTE byDialogNumber,BSTR *pbstrURL) {
+    return This->lpVtbl->GetModuleUI(This,byDialogNumber,pbstrURL);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccess_InformUIClosed(IBDA_ConditionalAccess* This,BYTE byDialogNumber,UICloseReasonType CloseReason) {
+    return This->lpVtbl->InformUIClosed(This,byDialogNumber,CloseReason);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardStatus_Proxy(
+    IBDA_ConditionalAccess* This,
+    SmartCardStatusType *pCardStatus,
+    SmartCardAssociationType *pCardAssociation,
+    BSTR *pbstrCardError,
+    VARIANT_BOOL *pfOOBLocked);
+void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardInfo_Proxy(
+    IBDA_ConditionalAccess* This,
+    BSTR *pbstrCardName,
+    BSTR *pbstrCardManufacturer,
+    VARIANT_BOOL *pfDaylightSavings,
+    BYTE *pbyRatingRegion,
+    LONG *plTimeZoneOffsetMinutes,
+    BSTR *pbstrLanguage,
+    EALocationCodeType *pEALocationCode);
+void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardApplications_Proxy(
+    IBDA_ConditionalAccess* This,
+    ULONG *pulcApplications,
+    ULONG ulcApplicationsMax,
+    SmartCardApplication rgApplications[]);
+void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardApplications_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_Entitlement_Proxy(
+    IBDA_ConditionalAccess* This,
+    USHORT usVirtualChannel,
+    EntitlementType *pEntitlement);
+void __RPC_STUB IBDA_ConditionalAccess_get_Entitlement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_TuneByChannel_Proxy(
+    IBDA_ConditionalAccess* This,
+    USHORT usVirtualChannel);
+void __RPC_STUB IBDA_ConditionalAccess_TuneByChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_SetProgram_Proxy(
+    IBDA_ConditionalAccess* This,
+    USHORT usProgramNumber);
+void __RPC_STUB IBDA_ConditionalAccess_SetProgram_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_AddProgram_Proxy(
+    IBDA_ConditionalAccess* This,
+    USHORT usProgramNumber);
+void __RPC_STUB IBDA_ConditionalAccess_AddProgram_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_RemoveProgram_Proxy(
+    IBDA_ConditionalAccess* This,
+    USHORT usProgramNumber);
+void __RPC_STUB IBDA_ConditionalAccess_RemoveProgram_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_GetModuleUI_Proxy(
+    IBDA_ConditionalAccess* This,
+    BYTE byDialogNumber,
+    BSTR *pbstrURL);
+void __RPC_STUB IBDA_ConditionalAccess_GetModuleUI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_InformUIClosed_Proxy(
+    IBDA_ConditionalAccess* This,
+    BYTE byDialogNumber,
+    UICloseReasonType CloseReason);
+void __RPC_STUB IBDA_ConditionalAccess_InformUIClosed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_ConditionalAccess_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DiagnosticProperties interface
+ */
+#ifndef __IBDA_DiagnosticProperties_INTERFACE_DEFINED__
+#define __IBDA_DiagnosticProperties_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DiagnosticProperties, 0x20e80cb5, 0xc543, 0x4c1b, 0x8e,0xb3, 0x49,0xe7,0x19,0xee,0xe7,0xd4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("20e80cb5-c543-4c1b-8eb3-49e719eee7d4")
+IBDA_DiagnosticProperties : public IPropertyBag
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DiagnosticProperties, 0x20e80cb5, 0xc543, 0x4c1b, 0x8e,0xb3, 0x49,0xe7,0x19,0xee,0xe7,0xd4)
+#endif
+#else
+typedef struct IBDA_DiagnosticPropertiesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DiagnosticProperties* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DiagnosticProperties* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DiagnosticProperties* This);
+
+    /*** IPropertyBag methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IBDA_DiagnosticProperties* This,
+        LPCOLESTR pszPropName,
+        VARIANT *pVar,
+        IErrorLog *pErrorLog);
+
+    HRESULT (STDMETHODCALLTYPE *Write)(
+        IBDA_DiagnosticProperties* This,
+        LPCOLESTR pszPropName,
+        VARIANT *pVar);
+
+    END_INTERFACE
+} IBDA_DiagnosticPropertiesVtbl;
+interface IBDA_DiagnosticProperties {
+    CONST_VTBL IBDA_DiagnosticPropertiesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DiagnosticProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DiagnosticProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DiagnosticProperties_Release(This) (This)->lpVtbl->Release(This)
+/*** IPropertyBag methods ***/
+#define IBDA_DiagnosticProperties_Read(This,pszPropName,pVar,pErrorLog) (This)->lpVtbl->Read(This,pszPropName,pVar,pErrorLog)
+#define IBDA_DiagnosticProperties_Write(This,pszPropName,pVar) (This)->lpVtbl->Write(This,pszPropName,pVar)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DiagnosticProperties_QueryInterface(IBDA_DiagnosticProperties* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DiagnosticProperties_AddRef(IBDA_DiagnosticProperties* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DiagnosticProperties_Release(IBDA_DiagnosticProperties* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IPropertyBag methods ***/
+static FORCEINLINE HRESULT IBDA_DiagnosticProperties_Read(IBDA_DiagnosticProperties* This,LPCOLESTR pszPropName,VARIANT *pVar,IErrorLog *pErrorLog) {
+    return This->lpVtbl->Read(This,pszPropName,pVar,pErrorLog);
+}
+static FORCEINLINE HRESULT IBDA_DiagnosticProperties_Write(IBDA_DiagnosticProperties* This,LPCOLESTR pszPropName,VARIANT *pVar) {
+    return This->lpVtbl->Write(This,pszPropName,pVar);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IBDA_DiagnosticProperties_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DRM interface
+ */
+#ifndef __IBDA_DRM_INTERFACE_DEFINED__
+#define __IBDA_DRM_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DRM, 0xf98d88b0, 0x1992, 0x4cd6, 0xa6,0xd9, 0xb9,0xaf,0xab,0x99,0x33,0x0d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f98d88b0-1992-4cd6-a6d9-b9afab99330d")
+IBDA_DRM : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDRMPairingStatus(
+        DWORD *pdwStatus,
+        HRESULT *phError) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PerformDRMPairing(
+        WINBOOL fSync) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DRM, 0xf98d88b0, 0x1992, 0x4cd6, 0xa6,0xd9, 0xb9,0xaf,0xab,0x99,0x33,0x0d)
+#endif
+#else
+typedef struct IBDA_DRMVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DRM* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DRM* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DRM* This);
+
+    /*** IBDA_DRM methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDRMPairingStatus)(
+        IBDA_DRM* This,
+        DWORD *pdwStatus,
+        HRESULT *phError);
+
+    HRESULT (STDMETHODCALLTYPE *PerformDRMPairing)(
+        IBDA_DRM* This,
+        WINBOOL fSync);
+
+    END_INTERFACE
+} IBDA_DRMVtbl;
+interface IBDA_DRM {
+    CONST_VTBL IBDA_DRMVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DRM_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DRM_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DRM_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DRM methods ***/
+#define IBDA_DRM_GetDRMPairingStatus(This,pdwStatus,phError) (This)->lpVtbl->GetDRMPairingStatus(This,pdwStatus,phError)
+#define IBDA_DRM_PerformDRMPairing(This,fSync) (This)->lpVtbl->PerformDRMPairing(This,fSync)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DRM_QueryInterface(IBDA_DRM* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DRM_AddRef(IBDA_DRM* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DRM_Release(IBDA_DRM* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DRM methods ***/
+static FORCEINLINE HRESULT IBDA_DRM_GetDRMPairingStatus(IBDA_DRM* This,DWORD *pdwStatus,HRESULT *phError) {
+    return This->lpVtbl->GetDRMPairingStatus(This,pdwStatus,phError);
+}
+static FORCEINLINE HRESULT IBDA_DRM_PerformDRMPairing(IBDA_DRM* This,WINBOOL fSync) {
+    return This->lpVtbl->PerformDRMPairing(This,fSync);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DRM_GetDRMPairingStatus_Proxy(
+    IBDA_DRM* This,
+    DWORD *pdwStatus,
+    HRESULT *phError);
+void __RPC_STUB IBDA_DRM_GetDRMPairingStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRM_PerformDRMPairing_Proxy(
+    IBDA_DRM* This,
+    WINBOOL fSync);
+void __RPC_STUB IBDA_DRM_PerformDRMPairing_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DRM_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_NameValueService interface
+ */
+#ifndef __IBDA_NameValueService_INTERFACE_DEFINED__
+#define __IBDA_NameValueService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_NameValueService, 0x7f0b3150, 0x7b81, 0x4ad4, 0x98,0xe3, 0x7e,0x90,0x97,0x09,0x43,0x01);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7f0b3150-7b81-4ad4-98e3-7e9097094301")
+IBDA_NameValueService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetValueNameByIndex(
+        ULONG ulIndex,
+        BSTR *pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetValue(
+        BSTR bstrName,
+        BSTR bstrLanguage,
+        BSTR *pbstrValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetValue(
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        BSTR bstrName,
+        BSTR bstrValue,
+        ULONG ulReserved) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_NameValueService, 0x7f0b3150, 0x7b81, 0x4ad4, 0x98,0xe3, 0x7e,0x90,0x97,0x09,0x43,0x01)
+#endif
+#else
+typedef struct IBDA_NameValueServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_NameValueService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_NameValueService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_NameValueService* This);
+
+    /*** IBDA_NameValueService methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetValueNameByIndex)(
+        IBDA_NameValueService* This,
+        ULONG ulIndex,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *GetValue)(
+        IBDA_NameValueService* This,
+        BSTR bstrName,
+        BSTR bstrLanguage,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetValue)(
+        IBDA_NameValueService* This,
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        BSTR bstrName,
+        BSTR bstrValue,
+        ULONG ulReserved);
+
+    END_INTERFACE
+} IBDA_NameValueServiceVtbl;
+interface IBDA_NameValueService {
+    CONST_VTBL IBDA_NameValueServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_NameValueService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_NameValueService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_NameValueService_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_NameValueService methods ***/
+#define IBDA_NameValueService_GetValueNameByIndex(This,ulIndex,pbstrName) (This)->lpVtbl->GetValueNameByIndex(This,ulIndex,pbstrName)
+#define IBDA_NameValueService_GetValue(This,bstrName,bstrLanguage,pbstrValue) (This)->lpVtbl->GetValue(This,bstrName,bstrLanguage,pbstrValue)
+#define IBDA_NameValueService_SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved) (This)->lpVtbl->SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_NameValueService_QueryInterface(IBDA_NameValueService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_NameValueService_AddRef(IBDA_NameValueService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_NameValueService_Release(IBDA_NameValueService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_NameValueService methods ***/
+static FORCEINLINE HRESULT IBDA_NameValueService_GetValueNameByIndex(IBDA_NameValueService* This,ULONG ulIndex,BSTR *pbstrName) {
+    return This->lpVtbl->GetValueNameByIndex(This,ulIndex,pbstrName);
+}
+static FORCEINLINE HRESULT IBDA_NameValueService_GetValue(IBDA_NameValueService* This,BSTR bstrName,BSTR bstrLanguage,BSTR *pbstrValue) {
+    return This->lpVtbl->GetValue(This,bstrName,bstrLanguage,pbstrValue);
+}
+static FORCEINLINE HRESULT IBDA_NameValueService_SetValue(IBDA_NameValueService* This,ULONG ulDialogRequest,BSTR bstrLanguage,BSTR bstrName,BSTR bstrValue,ULONG ulReserved) {
+    return This->lpVtbl->SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_NameValueService_GetValueNameByIndex_Proxy(
+    IBDA_NameValueService* This,
+    ULONG ulIndex,
+    BSTR *pbstrName);
+void __RPC_STUB IBDA_NameValueService_GetValueNameByIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NameValueService_GetValue_Proxy(
+    IBDA_NameValueService* This,
+    BSTR bstrName,
+    BSTR bstrLanguage,
+    BSTR *pbstrValue);
+void __RPC_STUB IBDA_NameValueService_GetValue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_NameValueService_SetValue_Proxy(
+    IBDA_NameValueService* This,
+    ULONG ulDialogRequest,
+    BSTR bstrLanguage,
+    BSTR bstrName,
+    BSTR bstrValue,
+    ULONG ulReserved);
+void __RPC_STUB IBDA_NameValueService_SetValue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_NameValueService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_ConditionalAccessEx interface
+ */
+#ifndef __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__
+#define __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_ConditionalAccessEx, 0x497c3418, 0x23cb, 0x44ba, 0xbb,0x62, 0x76,0x9f,0x50,0x6f,0xce,0xa7);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("497c3418-23cb-44ba-bb62-769f506fcea7")
+IBDA_ConditionalAccessEx : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CheckEntitlementToken(
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
+        ULONG ulcbEntitlementTokenLen,
+        BYTE *pbEntitlementToken,
+        ULONG *pulDescrambleStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCaptureToken(
+        ULONG ulcbCaptureTokenLen,
+        BYTE *pbCaptureToken) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OpenBroadcastMmi(
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG EventId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CloseMmiDialog(
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG ulDialogNumber,
+        BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
+        ULONG *pulSessionResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateDialogRequestNumber(
+        ULONG *pulDialogRequestNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_ConditionalAccessEx, 0x497c3418, 0x23cb, 0x44ba, 0xbb,0x62, 0x76,0x9f,0x50,0x6f,0xce,0xa7)
+#endif
+#else
+typedef struct IBDA_ConditionalAccessExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_ConditionalAccessEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_ConditionalAccessEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_ConditionalAccessEx* This);
+
+    /*** IBDA_ConditionalAccessEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *CheckEntitlementToken)(
+        IBDA_ConditionalAccessEx* This,
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
+        ULONG ulcbEntitlementTokenLen,
+        BYTE *pbEntitlementToken,
+        ULONG *pulDescrambleStatus);
+
+    HRESULT (STDMETHODCALLTYPE *SetCaptureToken)(
+        IBDA_ConditionalAccessEx* This,
+        ULONG ulcbCaptureTokenLen,
+        BYTE *pbCaptureToken);
+
+    HRESULT (STDMETHODCALLTYPE *OpenBroadcastMmi)(
+        IBDA_ConditionalAccessEx* This,
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG EventId);
+
+    HRESULT (STDMETHODCALLTYPE *CloseMmiDialog)(
+        IBDA_ConditionalAccessEx* This,
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG ulDialogNumber,
+        BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
+        ULONG *pulSessionResult);
+
+    HRESULT (STDMETHODCALLTYPE *CreateDialogRequestNumber)(
+        IBDA_ConditionalAccessEx* This,
+        ULONG *pulDialogRequestNumber);
+
+    END_INTERFACE
+} IBDA_ConditionalAccessExVtbl;
+interface IBDA_ConditionalAccessEx {
+    CONST_VTBL IBDA_ConditionalAccessExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IBDA_ConditionalAccessEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IBDA_ConditionalAccessEx_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IBDA_ConditionalAccessEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_ConditionalAccessEx methods ***/
 #define IBDA_ConditionalAccessEx_CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus) (This)->lpVtbl->CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus)
+#define IBDA_ConditionalAccessEx_SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken)
+#define IBDA_ConditionalAccessEx_OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId) (This)->lpVtbl->OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId)
 #define IBDA_ConditionalAccessEx_CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult) (This)->lpVtbl->CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult)
 #define IBDA_ConditionalAccessEx_CreateDialogRequestNumber(This,pulDialogRequestNumber) (This)->lpVtbl->CreateDialogRequestNumber(This,pulDialogRequestNumber)
-#define IBDA_ConditionalAccessEx_OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId) (This)->lpVtbl->OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId)
-#define IBDA_ConditionalAccessEx_SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_DRIDRMService
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_QueryInterface(IBDA_ConditionalAccessEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_ConditionalAccessEx_AddRef(IBDA_ConditionalAccessEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_ConditionalAccessEx_Release(IBDA_ConditionalAccessEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_ConditionalAccessEx methods ***/
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CheckEntitlementToken(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,ULONG ulcbEntitlementTokenLen,BYTE *pbEntitlementToken,ULONG *pulDescrambleStatus) {
+    return This->lpVtbl->CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_SetCaptureToken(IBDA_ConditionalAccessEx* This,ULONG ulcbCaptureTokenLen,BYTE *pbCaptureToken) {
+    return This->lpVtbl->SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_OpenBroadcastMmi(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG EventId) {
+    return This->lpVtbl->OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CloseMmiDialog(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG ulDialogNumber,BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,ULONG *pulSessionResult) {
+    return This->lpVtbl->CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult);
+}
+static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CreateDialogRequestNumber(IBDA_ConditionalAccessEx* This,ULONG *pulDialogRequestNumber) {
+    return This->lpVtbl->CreateDialogRequestNumber(This,pulDialogRequestNumber);
+}
 #endif
-DECLARE_INTERFACE_(IBDA_DRIDRMService,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDA_DRIDRMService methods */
-    STDMETHOD_(HRESULT,GetDRMStatus)(THIS_ BSTR *pbstrDrmUuidList,GUID *DrmUuid) PURE;
-    STDMETHOD_(HRESULT,GetPairingStatus)(THIS_ BDA_DrmPairingError *penumPairingStatus) PURE;
-    STDMETHOD_(HRESULT,SetDRM)(THIS_ GUID *puuidNewDrm) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IBDA_DRIDRMService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDA_DRIDRMService_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDA_DRIDRMService_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_DRIDRMService_GetDRMStatus(This,pbstrDrmUuidList,DrmUuid) (This)->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid)
-#define IBDA_DRIDRMService_GetPairingStatus(This,penumPairingStatus) (This)->lpVtbl->GetPairingStatus(This,penumPairingStatus)
-#define IBDA_DRIDRMService_SetDRM(This,puuidNewDrm) (This)->lpVtbl->SetDRM(This,puuidNewDrm)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_Encoder
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
 #endif
-DECLARE_INTERFACE_(IBDA_Encoder,IUnknown)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDA_Encoder methods */
-    STDMETHOD_(HRESULT,EnumAudioCapability)(THIS_ DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *SamplingRate,DWORD *BitDepth,DWORD *NumChannels) PURE;
-    STDMETHOD_(HRESULT,EnumVideoCapability)(THIS_ DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *VerticalSize,DWORD *HorizontalSize,DWORD *AspectRatio,DWORD *FrameRateCode,DWORD *ProgressiveSequence) PURE;
-    STDMETHOD_(HRESULT,GetState)(THIS_ DWORD *AudioBitrateMax,DWORD *AudioBitrateMin,DWORD *AudioBitrateMode,DWORD *AudioBitrateStepping,DWORD *AudioBitrate,DWORD *AudioMethodID,DWORD *AvailableAudioPrograms,DWORD *AudioProgram,DWORD *VideoBitrateMax,DWORD *VideoBitrateMin,DWORD *VideoBitrateMode,DWORD *VideoBitrate,DWORD *VideoBitrateStepping,DWORD *VideoMethodID,DWORD *SignalSourceID,ULONGLONG *SignalFormat,WINBOOL *SignalLock,LONG *SignalLevel,DWORD *SignalToNoiseRatio) PURE;
-    STDMETHOD_(HRESULT,QueryCapabilities)(THIS_ DWORD *NumAudioFmts,DWORD *NumVideoFmts) PURE;
-    STDMETHOD_(HRESULT,SetParameters)(THIS_ DWORD AudioBitrateMode,DWORD AudioBitrate,DWORD AudioMethodID,DWORD AudioProgram,DWORD VideoBitrateMode,DWORD VideoBitrate,DWORD VideoMethodID) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IBDA_Encoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDA_Encoder_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDA_Encoder_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_Encoder_EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels) (This)->lpVtbl->EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels)
-#define IBDA_Encoder_EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence) (This)->lpVtbl->EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence)
-#define IBDA_Encoder_GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio) (This)->lpVtbl->GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio)
-#define IBDA_Encoder_QueryCapabilities(This,NumAudioFmts,NumVideoFmts) (This)->lpVtbl->QueryCapabilities(This,NumAudioFmts,NumVideoFmts)
-#define IBDA_Encoder_SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID) (This)->lpVtbl->SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_EventingService
-DECLARE_INTERFACE_(IBDA_EventingService,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDA_EventingService methods */
-    STDMETHOD_(HRESULT,CompleteEvent)(THIS_ ULONG ulEventID,ULONG ulEventResult) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IBDA_EventingService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDA_EventingService_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDA_EventingService_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_EventingService_CompleteEvent(This,ulEventID,ulEventResult) (This)->lpVtbl->CompleteEvent(This,ulEventID,ulEventResult)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_FDC
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
 #endif
-DECLARE_INTERFACE_(IBDA_FDC,IUnknown)
+
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CheckEntitlementToken_Proxy(
+    IBDA_ConditionalAccessEx* This,
+    ULONG ulDialogRequest,
+    BSTR bstrLanguage,
+    BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
+    ULONG ulcbEntitlementTokenLen,
+    BYTE *pbEntitlementToken,
+    ULONG *pulDescrambleStatus);
+void __RPC_STUB IBDA_ConditionalAccessEx_CheckEntitlementToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_SetCaptureToken_Proxy(
+    IBDA_ConditionalAccessEx* This,
+    ULONG ulcbCaptureTokenLen,
+    BYTE *pbCaptureToken);
+void __RPC_STUB IBDA_ConditionalAccessEx_SetCaptureToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_OpenBroadcastMmi_Proxy(
+    IBDA_ConditionalAccessEx* This,
+    ULONG ulDialogRequest,
+    BSTR bstrLanguage,
+    ULONG EventId);
+void __RPC_STUB IBDA_ConditionalAccessEx_OpenBroadcastMmi_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CloseMmiDialog_Proxy(
+    IBDA_ConditionalAccessEx* This,
+    ULONG ulDialogRequest,
+    BSTR bstrLanguage,
+    ULONG ulDialogNumber,
+    BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
+    ULONG *pulSessionResult);
+void __RPC_STUB IBDA_ConditionalAccessEx_CloseMmiDialog_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CreateDialogRequestNumber_Proxy(
+    IBDA_ConditionalAccessEx* This,
+    ULONG *pulDialogRequestNumber);
+void __RPC_STUB IBDA_ConditionalAccessEx_CreateDialogRequestNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_ISDBConditionalAccess interface
+ */
+#ifndef __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__
+#define __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_ISDBConditionalAccess, 0x5e68c627, 0x16c2, 0x4e6c, 0xb1,0xe2, 0xd0,0x01,0x70,0xcd,0xaa,0x0f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5e68c627-16c2-4e6c-b1e2-d00170cdaa0f")
+IBDA_ISDBConditionalAccess : public IUnknown
 {
-    BEGIN_INTERFACE
+    virtual HRESULT STDMETHODCALLTYPE SetIsdbCasRequest(
+        ULONG ulRequestId,
+        ULONG ulcbRequestBufferLen,
+        BYTE *pbRequestBuffer) = 0;
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDA_FDC methods */
-    STDMETHOD_(HRESULT,AddPid)(THIS_ BSTR PidsToAdd,DWORD *RemainingFilterEntries) PURE;
-    STDMETHOD_(HRESULT,AddTid)(THIS_ BSTR TidsToAdd,BSTR *CurrentTidList) PURE;
-    STDMETHOD_(HRESULT,GetStatus)(THIS_ DWORD *CurrentBitrate,WINBOOL *CarrierLock,DWORD *CurrentFrequency,WINBOOL *CurrentSpectrumInversion,BSTR *CurrentPIDList,BSTR *CurrentTIDList,WINBOOL *Overflow) PURE;
-    STDMETHOD_(HRESULT,GetTableSection)(THIS_ DWORD *Pid,DWORD MaxBufferSize,DWORD *ActualSize,BYTE *SecBuffer) PURE;
-    STDMETHOD_(HRESULT,RemovePid)(THIS_ BSTR PidsToRemove) PURE;
-    STDMETHOD_(HRESULT,RemoveTid)(THIS_ BSTR TidsToRemove) PURE;
-    STDMETHOD_(HRESULT,RequestTables)(THIS_ BSTR TableIDs) PURE;
-
-    END_INTERFACE
 };
-#ifdef COBJMACROS
-#define IBDA_FDC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDA_FDC_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDA_FDC_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_FDC_AddPid(This,PidsToAdd,RemainingFilterEntries) (This)->lpVtbl->AddPid(This,PidsToAdd,RemainingFilterEntries)
-#define IBDA_FDC_AddTid(This,TidsToAdd,CurrentTidList) (This)->lpVtbl->AddTid(This,TidsToAdd,CurrentTidList)
-#define IBDA_FDC_GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow) (This)->lpVtbl->GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow)
-#define IBDA_FDC_GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer) (This)->lpVtbl->GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer)
-#define IBDA_FDC_RemovePid(This,PidsToRemove) (This)->lpVtbl->RemovePid(This,PidsToRemove)
-#define IBDA_FDC_RemoveTid(This,TidsToRemove) (This)->lpVtbl->RemoveTid(This,TidsToRemove)
-#define IBDA_FDC_RequestTables(This,TableIDs) (This)->lpVtbl->RequestTables(This,TableIDs)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_GuideDataDeliveryService
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_ISDBConditionalAccess, 0x5e68c627, 0x16c2, 0x4e6c, 0xb1,0xe2, 0xd0,0x01,0x70,0xcd,0xaa,0x0f)
 #endif
-DECLARE_INTERFACE_(IBDA_GuideDataDeliveryService,IUnknown)
-{
+#else
+typedef struct IBDA_ISDBConditionalAccessVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_ISDBConditionalAccess* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IBDA_GuideDataDeliveryService methods */
-    STDMETHOD(GetGuideData)(THIS_ ULONG *pulcbBufferLen,BYTE *pbBuffer,ULONG *pulGuideDataPercentageProgress) PURE;
-    STDMETHOD_(HRESULT,GetGuideDataType)(THIS_ GUID *pguidDataType) PURE;
-    STDMETHOD_(HRESULT,GetServiceInfoFromTuneXml)(THIS_ BSTR bstrTuneXml,BSTR *pbstrServiceDescription) PURE;
-    STDMETHOD_(HRESULT,GetServices)(THIS_ ULONG *pulcbBufferLen,BYTE *pbBuffer) PURE;
-    STDMETHOD_(HRESULT,GetTuneXmlFromServiceIdx)(THIS_ ULONG64 ul64ServiceIdx,BSTR *pbstrTuneXml) PURE;
-    STDMETHOD_(HRESULT,RequestGuideDataUpdate)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_ISDBConditionalAccess* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_ISDBConditionalAccess* This);
+
+    /*** IBDA_ISDBConditionalAccess methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetIsdbCasRequest)(
+        IBDA_ISDBConditionalAccess* This,
+        ULONG ulRequestId,
+        ULONG ulcbRequestBufferLen,
+        BYTE *pbRequestBuffer);
 
     END_INTERFACE
+} IBDA_ISDBConditionalAccessVtbl;
+interface IBDA_ISDBConditionalAccess {
+    CONST_VTBL IBDA_ISDBConditionalAccessVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IBDA_GuideDataDeliveryService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDA_GuideDataDeliveryService_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDA_GuideDataDeliveryService_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_GuideDataDeliveryService_GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress) (This)->lpVtbl->GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress)
-#define IBDA_GuideDataDeliveryService_GetGuideDataType(This,pguidDataType) (This)->lpVtbl->GetGuideDataType(This,pguidDataType)
-#define IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription) (This)->lpVtbl->GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription)
-#define IBDA_GuideDataDeliveryService_GetServices(This,pulcbBufferLen,pbBuffer) (This)->lpVtbl->GetServices(This,pulcbBufferLen,pbBuffer)
-#define IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml) (This)->lpVtbl->GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml)
-#define IBDA_GuideDataDeliveryService_RequestGuideDataUpdate() (This)->lpVtbl->RequestGuideDataUpdate(This)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_ISDBConditionalAccess
-DECLARE_INTERFACE_(IBDA_ISDBConditionalAccess,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDA_ISDBConditionalAccess methods */
-    STDMETHOD_(HRESULT,SetIsdbCasRequest)(THIS_ ULONG ulRequestId,ULONG ulcbRequestBufferLen,BYTE *pbRequestBuffer) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IBDA_ISDBConditionalAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IBDA_ISDBConditionalAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IBDA_ISDBConditionalAccess_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_ISDBConditionalAccess methods ***/
 #define IBDA_ISDBConditionalAccess_SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer) (This)->lpVtbl->SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_MUX
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_ISDBConditionalAccess_QueryInterface(IBDA_ISDBConditionalAccess* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_ISDBConditionalAccess_AddRef(IBDA_ISDBConditionalAccess* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_ISDBConditionalAccess_Release(IBDA_ISDBConditionalAccess* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_ISDBConditionalAccess methods ***/
+static FORCEINLINE HRESULT IBDA_ISDBConditionalAccess_SetIsdbCasRequest(IBDA_ISDBConditionalAccess* This,ULONG ulRequestId,ULONG ulcbRequestBufferLen,BYTE *pbRequestBuffer) {
+    return This->lpVtbl->SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer);
+}
 #endif
-DECLARE_INTERFACE_(IBDA_MUX,IUnknown)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_ISDBConditionalAccess_SetIsdbCasRequest_Proxy(
+    IBDA_ISDBConditionalAccess* This,
+    ULONG ulRequestId,
+    ULONG ulcbRequestBufferLen,
+    BYTE *pbRequestBuffer);
+void __RPC_STUB IBDA_ISDBConditionalAccess_SetIsdbCasRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_EventingService interface
+ */
+#ifndef __IBDA_EventingService_INTERFACE_DEFINED__
+#define __IBDA_EventingService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_EventingService, 0x207c413f, 0x00dc, 0x4c61, 0xba,0xd6, 0x6f,0xee,0x1f,0xf0,0x70,0x64);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("207c413f-00dc-4c61-bad6-6fee1ff07064")
+IBDA_EventingService : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE CompleteEvent(
+        ULONG ulEventID,
+        ULONG ulEventResult) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_EventingService, 0x207c413f, 0x00dc, 0x4c61, 0xba,0xd6, 0x6f,0xee,0x1f,0xf0,0x70,0x64)
+#endif
+#else
+typedef struct IBDA_EventingServiceVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_EventingService* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IBDA_MUX methods */
-    STDMETHOD_(HRESULT,GetPidList)(THIS_ BDA_MUX_PIDLISTITEM *pbPidListBuffer) PURE;
-    STDMETHOD_(HRESULT,SetPidList)(THIS_ ULONG ulPidListCount,BDA_MUX_PIDLISTITEM *pbPidListBuffer) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_EventingService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_EventingService* This);
+
+    /*** IBDA_EventingService methods ***/
+    HRESULT (STDMETHODCALLTYPE *CompleteEvent)(
+        IBDA_EventingService* This,
+        ULONG ulEventID,
+        ULONG ulEventResult);
 
     END_INTERFACE
+} IBDA_EventingServiceVtbl;
+interface IBDA_EventingService {
+    CONST_VTBL IBDA_EventingServiceVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_EventingService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_EventingService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_EventingService_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_EventingService methods ***/
+#define IBDA_EventingService_CompleteEvent(This,ulEventID,ulEventResult) (This)->lpVtbl->CompleteEvent(This,ulEventID,ulEventResult)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_EventingService_QueryInterface(IBDA_EventingService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_EventingService_AddRef(IBDA_EventingService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_EventingService_Release(IBDA_EventingService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_EventingService methods ***/
+static FORCEINLINE HRESULT IBDA_EventingService_CompleteEvent(IBDA_EventingService* This,ULONG ulEventID,ULONG ulEventResult) {
+    return This->lpVtbl->CompleteEvent(This,ulEventID,ulEventResult);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_EventingService_CompleteEvent_Proxy(
+    IBDA_EventingService* This,
+    ULONG ulEventID,
+    ULONG ulEventResult);
+void __RPC_STUB IBDA_EventingService_CompleteEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_EventingService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_AUX interface
+ */
+#ifndef __IBDA_AUX_INTERFACE_DEFINED__
+#define __IBDA_AUX_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_AUX, 0x7def4c09, 0x6e66, 0x4567, 0xa8,0x19, 0xf0,0xe1,0x7f,0x4a,0x81,0xab);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7def4c09-6e66-4567-a819-f0e17f4a81ab")
+IBDA_AUX : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryCapabilities(
+        DWORD *pdwNumAuxInputsBSTR) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumCapability(
+        DWORD dwIndex,
+        DWORD *dwInputID,
+        GUID *pConnectorType,
+        DWORD *ConnTypeNum,
+        DWORD *NumVideoStds,
+        ULONGLONG *AnalogStds) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_AUX, 0x7def4c09, 0x6e66, 0x4567, 0xa8,0x19, 0xf0,0xe1,0x7f,0x4a,0x81,0xab)
+#endif
+#else
+typedef struct IBDA_AUXVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_AUX* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_AUX* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_AUX* This);
+
+    /*** IBDA_AUX methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
+        IBDA_AUX* This,
+        DWORD *pdwNumAuxInputsBSTR);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCapability)(
+        IBDA_AUX* This,
+        DWORD dwIndex,
+        DWORD *dwInputID,
+        GUID *pConnectorType,
+        DWORD *ConnTypeNum,
+        DWORD *NumVideoStds,
+        ULONGLONG *AnalogStds);
+
+    END_INTERFACE
+} IBDA_AUXVtbl;
+interface IBDA_AUX {
+    CONST_VTBL IBDA_AUXVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_AUX_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_AUX_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_AUX_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_AUX methods ***/
+#define IBDA_AUX_QueryCapabilities(This,pdwNumAuxInputsBSTR) (This)->lpVtbl->QueryCapabilities(This,pdwNumAuxInputsBSTR)
+#define IBDA_AUX_EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds) (This)->lpVtbl->EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_AUX_QueryInterface(IBDA_AUX* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_AUX_AddRef(IBDA_AUX* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_AUX_Release(IBDA_AUX* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_AUX methods ***/
+static FORCEINLINE HRESULT IBDA_AUX_QueryCapabilities(IBDA_AUX* This,DWORD *pdwNumAuxInputsBSTR) {
+    return This->lpVtbl->QueryCapabilities(This,pdwNumAuxInputsBSTR);
+}
+static FORCEINLINE HRESULT IBDA_AUX_EnumCapability(IBDA_AUX* This,DWORD dwIndex,DWORD *dwInputID,GUID *pConnectorType,DWORD *ConnTypeNum,DWORD *NumVideoStds,ULONGLONG *AnalogStds) {
+    return This->lpVtbl->EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_AUX_QueryCapabilities_Proxy(
+    IBDA_AUX* This,
+    DWORD *pdwNumAuxInputsBSTR);
+void __RPC_STUB IBDA_AUX_QueryCapabilities_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_AUX_EnumCapability_Proxy(
+    IBDA_AUX* This,
+    DWORD dwIndex,
+    DWORD *dwInputID,
+    GUID *pConnectorType,
+    DWORD *ConnTypeNum,
+    DWORD *NumVideoStds,
+    ULONGLONG *AnalogStds);
+void __RPC_STUB IBDA_AUX_EnumCapability_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_AUX_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_Encoder interface
+ */
+#ifndef __IBDA_Encoder_INTERFACE_DEFINED__
+#define __IBDA_Encoder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_Encoder, 0x3a8bad59, 0x59fe, 0x4559, 0xa0,0xba, 0x39,0x6c,0xfa,0xa9,0x8a,0xe3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3a8bad59-59fe-4559-a0ba-396cfaa98ae3")
+IBDA_Encoder : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryCapabilities(
+        DWORD *NumAudioFmts,
+        DWORD *NumVideoFmts) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAudioCapability(
+        DWORD FmtIndex,
+        DWORD *MethodID,
+        DWORD *AlgorithmType,
+        DWORD *SamplingRate,
+        DWORD *BitDepth,
+        DWORD *NumChannels) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumVideoCapability(
+        DWORD FmtIndex,
+        DWORD *MethodID,
+        DWORD *AlgorithmType,
+        DWORD *VerticalSize,
+        DWORD *HorizontalSize,
+        DWORD *AspectRatio,
+        DWORD *FrameRateCode,
+        DWORD *ProgressiveSequence) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetParameters(
+        DWORD AudioBitrateMode,
+        DWORD AudioBitrate,
+        DWORD AudioMethodID,
+        DWORD AudioProgram,
+        DWORD VideoBitrateMode,
+        DWORD VideoBitrate,
+        DWORD VideoMethodID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetState(
+        DWORD *AudioBitrateMax,
+        DWORD *AudioBitrateMin,
+        DWORD *AudioBitrateMode,
+        DWORD *AudioBitrateStepping,
+        DWORD *AudioBitrate,
+        DWORD *AudioMethodID,
+        DWORD *AvailableAudioPrograms,
+        DWORD *AudioProgram,
+        DWORD *VideoBitrateMax,
+        DWORD *VideoBitrateMin,
+        DWORD *VideoBitrateMode,
+        DWORD *VideoBitrate,
+        DWORD *VideoBitrateStepping,
+        DWORD *VideoMethodID,
+        DWORD *SignalSourceID,
+        ULONGLONG *SignalFormat,
+        WINBOOL *SignalLock,
+        LONG *SignalLevel,
+        DWORD *SignalToNoiseRatio) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_Encoder, 0x3a8bad59, 0x59fe, 0x4559, 0xa0,0xba, 0x39,0x6c,0xfa,0xa9,0x8a,0xe3)
+#endif
+#else
+typedef struct IBDA_EncoderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_Encoder* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_Encoder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_Encoder* This);
+
+    /*** IBDA_Encoder methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
+        IBDA_Encoder* This,
+        DWORD *NumAudioFmts,
+        DWORD *NumVideoFmts);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAudioCapability)(
+        IBDA_Encoder* This,
+        DWORD FmtIndex,
+        DWORD *MethodID,
+        DWORD *AlgorithmType,
+        DWORD *SamplingRate,
+        DWORD *BitDepth,
+        DWORD *NumChannels);
+
+    HRESULT (STDMETHODCALLTYPE *EnumVideoCapability)(
+        IBDA_Encoder* This,
+        DWORD FmtIndex,
+        DWORD *MethodID,
+        DWORD *AlgorithmType,
+        DWORD *VerticalSize,
+        DWORD *HorizontalSize,
+        DWORD *AspectRatio,
+        DWORD *FrameRateCode,
+        DWORD *ProgressiveSequence);
+
+    HRESULT (STDMETHODCALLTYPE *SetParameters)(
+        IBDA_Encoder* This,
+        DWORD AudioBitrateMode,
+        DWORD AudioBitrate,
+        DWORD AudioMethodID,
+        DWORD AudioProgram,
+        DWORD VideoBitrateMode,
+        DWORD VideoBitrate,
+        DWORD VideoMethodID);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IBDA_Encoder* This,
+        DWORD *AudioBitrateMax,
+        DWORD *AudioBitrateMin,
+        DWORD *AudioBitrateMode,
+        DWORD *AudioBitrateStepping,
+        DWORD *AudioBitrate,
+        DWORD *AudioMethodID,
+        DWORD *AvailableAudioPrograms,
+        DWORD *AudioProgram,
+        DWORD *VideoBitrateMax,
+        DWORD *VideoBitrateMin,
+        DWORD *VideoBitrateMode,
+        DWORD *VideoBitrate,
+        DWORD *VideoBitrateStepping,
+        DWORD *VideoMethodID,
+        DWORD *SignalSourceID,
+        ULONGLONG *SignalFormat,
+        WINBOOL *SignalLock,
+        LONG *SignalLevel,
+        DWORD *SignalToNoiseRatio);
+
+    END_INTERFACE
+} IBDA_EncoderVtbl;
+interface IBDA_Encoder {
+    CONST_VTBL IBDA_EncoderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_Encoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_Encoder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_Encoder_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_Encoder methods ***/
+#define IBDA_Encoder_QueryCapabilities(This,NumAudioFmts,NumVideoFmts) (This)->lpVtbl->QueryCapabilities(This,NumAudioFmts,NumVideoFmts)
+#define IBDA_Encoder_EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels) (This)->lpVtbl->EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels)
+#define IBDA_Encoder_EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence) (This)->lpVtbl->EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence)
+#define IBDA_Encoder_SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID) (This)->lpVtbl->SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID)
+#define IBDA_Encoder_GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio) (This)->lpVtbl->GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_Encoder_QueryInterface(IBDA_Encoder* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_Encoder_AddRef(IBDA_Encoder* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_Encoder_Release(IBDA_Encoder* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_Encoder methods ***/
+static FORCEINLINE HRESULT IBDA_Encoder_QueryCapabilities(IBDA_Encoder* This,DWORD *NumAudioFmts,DWORD *NumVideoFmts) {
+    return This->lpVtbl->QueryCapabilities(This,NumAudioFmts,NumVideoFmts);
+}
+static FORCEINLINE HRESULT IBDA_Encoder_EnumAudioCapability(IBDA_Encoder* This,DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *SamplingRate,DWORD *BitDepth,DWORD *NumChannels) {
+    return This->lpVtbl->EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels);
+}
+static FORCEINLINE HRESULT IBDA_Encoder_EnumVideoCapability(IBDA_Encoder* This,DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *VerticalSize,DWORD *HorizontalSize,DWORD *AspectRatio,DWORD *FrameRateCode,DWORD *ProgressiveSequence) {
+    return This->lpVtbl->EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence);
+}
+static FORCEINLINE HRESULT IBDA_Encoder_SetParameters(IBDA_Encoder* This,DWORD AudioBitrateMode,DWORD AudioBitrate,DWORD AudioMethodID,DWORD AudioProgram,DWORD VideoBitrateMode,DWORD VideoBitrate,DWORD VideoMethodID) {
+    return This->lpVtbl->SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID);
+}
+static FORCEINLINE HRESULT IBDA_Encoder_GetState(IBDA_Encoder* This,DWORD *AudioBitrateMax,DWORD *AudioBitrateMin,DWORD *AudioBitrateMode,DWORD *AudioBitrateStepping,DWORD *AudioBitrate,DWORD *AudioMethodID,DWORD *AvailableAudioPrograms,DWORD *AudioProgram,DWORD *VideoBitrateMax,DWORD *VideoBitrateMin,DWORD *VideoBitrateMode,DWORD *VideoBitrate,DWORD *VideoBitrateStepping,DWORD *VideoMethodID,DWORD *SignalSourceID,ULONGLONG *SignalFormat,WINBOOL *SignalLock,LONG *SignalLevel,DWORD *SignalToNoiseRatio) {
+    return This->lpVtbl->GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_Encoder_QueryCapabilities_Proxy(
+    IBDA_Encoder* This,
+    DWORD *NumAudioFmts,
+    DWORD *NumVideoFmts);
+void __RPC_STUB IBDA_Encoder_QueryCapabilities_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Encoder_EnumAudioCapability_Proxy(
+    IBDA_Encoder* This,
+    DWORD FmtIndex,
+    DWORD *MethodID,
+    DWORD *AlgorithmType,
+    DWORD *SamplingRate,
+    DWORD *BitDepth,
+    DWORD *NumChannels);
+void __RPC_STUB IBDA_Encoder_EnumAudioCapability_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Encoder_EnumVideoCapability_Proxy(
+    IBDA_Encoder* This,
+    DWORD FmtIndex,
+    DWORD *MethodID,
+    DWORD *AlgorithmType,
+    DWORD *VerticalSize,
+    DWORD *HorizontalSize,
+    DWORD *AspectRatio,
+    DWORD *FrameRateCode,
+    DWORD *ProgressiveSequence);
+void __RPC_STUB IBDA_Encoder_EnumVideoCapability_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Encoder_SetParameters_Proxy(
+    IBDA_Encoder* This,
+    DWORD AudioBitrateMode,
+    DWORD AudioBitrate,
+    DWORD AudioMethodID,
+    DWORD AudioProgram,
+    DWORD VideoBitrateMode,
+    DWORD VideoBitrate,
+    DWORD VideoMethodID);
+void __RPC_STUB IBDA_Encoder_SetParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_Encoder_GetState_Proxy(
+    IBDA_Encoder* This,
+    DWORD *AudioBitrateMax,
+    DWORD *AudioBitrateMin,
+    DWORD *AudioBitrateMode,
+    DWORD *AudioBitrateStepping,
+    DWORD *AudioBitrate,
+    DWORD *AudioMethodID,
+    DWORD *AvailableAudioPrograms,
+    DWORD *AudioProgram,
+    DWORD *VideoBitrateMax,
+    DWORD *VideoBitrateMin,
+    DWORD *VideoBitrateMode,
+    DWORD *VideoBitrate,
+    DWORD *VideoBitrateStepping,
+    DWORD *VideoMethodID,
+    DWORD *SignalSourceID,
+    ULONGLONG *SignalFormat,
+    WINBOOL *SignalLock,
+    LONG *SignalLevel,
+    DWORD *SignalToNoiseRatio);
+void __RPC_STUB IBDA_Encoder_GetState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_Encoder_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_FDC interface
+ */
+#ifndef __IBDA_FDC_INTERFACE_DEFINED__
+#define __IBDA_FDC_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_FDC, 0x138adc7e, 0x58ae, 0x437f, 0xb0,0xb4, 0xc9,0xfe,0x19,0xd5,0xb4,0xac);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("138adc7e-58ae-437f-b0b4-c9fe19d5b4ac")
+IBDA_FDC : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetStatus(
+        DWORD *CurrentBitrate,
+        WINBOOL *CarrierLock,
+        DWORD *CurrentFrequency,
+        WINBOOL *CurrentSpectrumInversion,
+        BSTR *CurrentPIDList,
+        BSTR *CurrentTIDList,
+        WINBOOL *Overflow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestTables(
+        BSTR TableIDs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddPid(
+        BSTR PidsToAdd,
+        DWORD *RemainingFilterEntries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemovePid(
+        BSTR PidsToRemove) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddTid(
+        BSTR TidsToAdd,
+        BSTR *CurrentTidList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveTid(
+        BSTR TidsToRemove) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTableSection(
+        DWORD *Pid,
+        DWORD MaxBufferSize,
+        DWORD *ActualSize,
+        BYTE *SecBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_FDC, 0x138adc7e, 0x58ae, 0x437f, 0xb0,0xb4, 0xc9,0xfe,0x19,0xd5,0xb4,0xac)
+#endif
+#else
+typedef struct IBDA_FDCVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_FDC* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_FDC* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_FDC* This);
+
+    /*** IBDA_FDC methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetStatus)(
+        IBDA_FDC* This,
+        DWORD *CurrentBitrate,
+        WINBOOL *CarrierLock,
+        DWORD *CurrentFrequency,
+        WINBOOL *CurrentSpectrumInversion,
+        BSTR *CurrentPIDList,
+        BSTR *CurrentTIDList,
+        WINBOOL *Overflow);
+
+    HRESULT (STDMETHODCALLTYPE *RequestTables)(
+        IBDA_FDC* This,
+        BSTR TableIDs);
+
+    HRESULT (STDMETHODCALLTYPE *AddPid)(
+        IBDA_FDC* This,
+        BSTR PidsToAdd,
+        DWORD *RemainingFilterEntries);
+
+    HRESULT (STDMETHODCALLTYPE *RemovePid)(
+        IBDA_FDC* This,
+        BSTR PidsToRemove);
+
+    HRESULT (STDMETHODCALLTYPE *AddTid)(
+        IBDA_FDC* This,
+        BSTR TidsToAdd,
+        BSTR *CurrentTidList);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveTid)(
+        IBDA_FDC* This,
+        BSTR TidsToRemove);
+
+    HRESULT (STDMETHODCALLTYPE *GetTableSection)(
+        IBDA_FDC* This,
+        DWORD *Pid,
+        DWORD MaxBufferSize,
+        DWORD *ActualSize,
+        BYTE *SecBuffer);
+
+    END_INTERFACE
+} IBDA_FDCVtbl;
+interface IBDA_FDC {
+    CONST_VTBL IBDA_FDCVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_FDC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_FDC_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_FDC_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_FDC methods ***/
+#define IBDA_FDC_GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow) (This)->lpVtbl->GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow)
+#define IBDA_FDC_RequestTables(This,TableIDs) (This)->lpVtbl->RequestTables(This,TableIDs)
+#define IBDA_FDC_AddPid(This,PidsToAdd,RemainingFilterEntries) (This)->lpVtbl->AddPid(This,PidsToAdd,RemainingFilterEntries)
+#define IBDA_FDC_RemovePid(This,PidsToRemove) (This)->lpVtbl->RemovePid(This,PidsToRemove)
+#define IBDA_FDC_AddTid(This,TidsToAdd,CurrentTidList) (This)->lpVtbl->AddTid(This,TidsToAdd,CurrentTidList)
+#define IBDA_FDC_RemoveTid(This,TidsToRemove) (This)->lpVtbl->RemoveTid(This,TidsToRemove)
+#define IBDA_FDC_GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer) (This)->lpVtbl->GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_FDC_QueryInterface(IBDA_FDC* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_FDC_AddRef(IBDA_FDC* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_FDC_Release(IBDA_FDC* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_FDC methods ***/
+static FORCEINLINE HRESULT IBDA_FDC_GetStatus(IBDA_FDC* This,DWORD *CurrentBitrate,WINBOOL *CarrierLock,DWORD *CurrentFrequency,WINBOOL *CurrentSpectrumInversion,BSTR *CurrentPIDList,BSTR *CurrentTIDList,WINBOOL *Overflow) {
+    return This->lpVtbl->GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow);
+}
+static FORCEINLINE HRESULT IBDA_FDC_RequestTables(IBDA_FDC* This,BSTR TableIDs) {
+    return This->lpVtbl->RequestTables(This,TableIDs);
+}
+static FORCEINLINE HRESULT IBDA_FDC_AddPid(IBDA_FDC* This,BSTR PidsToAdd,DWORD *RemainingFilterEntries) {
+    return This->lpVtbl->AddPid(This,PidsToAdd,RemainingFilterEntries);
+}
+static FORCEINLINE HRESULT IBDA_FDC_RemovePid(IBDA_FDC* This,BSTR PidsToRemove) {
+    return This->lpVtbl->RemovePid(This,PidsToRemove);
+}
+static FORCEINLINE HRESULT IBDA_FDC_AddTid(IBDA_FDC* This,BSTR TidsToAdd,BSTR *CurrentTidList) {
+    return This->lpVtbl->AddTid(This,TidsToAdd,CurrentTidList);
+}
+static FORCEINLINE HRESULT IBDA_FDC_RemoveTid(IBDA_FDC* This,BSTR TidsToRemove) {
+    return This->lpVtbl->RemoveTid(This,TidsToRemove);
+}
+static FORCEINLINE HRESULT IBDA_FDC_GetTableSection(IBDA_FDC* This,DWORD *Pid,DWORD MaxBufferSize,DWORD *ActualSize,BYTE *SecBuffer) {
+    return This->lpVtbl->GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_FDC_GetStatus_Proxy(
+    IBDA_FDC* This,
+    DWORD *CurrentBitrate,
+    WINBOOL *CarrierLock,
+    DWORD *CurrentFrequency,
+    WINBOOL *CurrentSpectrumInversion,
+    BSTR *CurrentPIDList,
+    BSTR *CurrentTIDList,
+    WINBOOL *Overflow);
+void __RPC_STUB IBDA_FDC_GetStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_RequestTables_Proxy(
+    IBDA_FDC* This,
+    BSTR TableIDs);
+void __RPC_STUB IBDA_FDC_RequestTables_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_AddPid_Proxy(
+    IBDA_FDC* This,
+    BSTR PidsToAdd,
+    DWORD *RemainingFilterEntries);
+void __RPC_STUB IBDA_FDC_AddPid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_RemovePid_Proxy(
+    IBDA_FDC* This,
+    BSTR PidsToRemove);
+void __RPC_STUB IBDA_FDC_RemovePid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_AddTid_Proxy(
+    IBDA_FDC* This,
+    BSTR TidsToAdd,
+    BSTR *CurrentTidList);
+void __RPC_STUB IBDA_FDC_AddTid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_RemoveTid_Proxy(
+    IBDA_FDC* This,
+    BSTR TidsToRemove);
+void __RPC_STUB IBDA_FDC_RemoveTid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_FDC_GetTableSection_Proxy(
+    IBDA_FDC* This,
+    DWORD *Pid,
+    DWORD MaxBufferSize,
+    DWORD *ActualSize,
+    BYTE *SecBuffer);
+void __RPC_STUB IBDA_FDC_GetTableSection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_FDC_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_GuideDataDeliveryService interface
+ */
+#ifndef __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__
+#define __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_GuideDataDeliveryService, 0xc0afcb73, 0x23e7, 0x4bc6, 0xba,0xfa, 0xfd,0xc1,0x67,0xb4,0x71,0x9f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c0afcb73-23e7-4bc6-bafa-fdc167b4719f")
+IBDA_GuideDataDeliveryService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetGuideDataType(
+        GUID *pguidDataType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGuideData(
+        ULONG *pulcbBufferLen,
+        BYTE *pbBuffer,
+        ULONG *pulGuideDataPercentageProgress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestGuideDataUpdate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTuneXmlFromServiceIdx(
+        ULONG64 ul64ServiceIdx,
+        BSTR *pbstrTuneXml) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetServices(
+        ULONG *pulcbBufferLen,
+        BYTE *pbBuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetServiceInfoFromTuneXml(
+        BSTR bstrTuneXml,
+        BSTR *pbstrServiceDescription) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_GuideDataDeliveryService, 0xc0afcb73, 0x23e7, 0x4bc6, 0xba,0xfa, 0xfd,0xc1,0x67,0xb4,0x71,0x9f)
+#endif
+#else
+typedef struct IBDA_GuideDataDeliveryServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_GuideDataDeliveryService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_GuideDataDeliveryService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_GuideDataDeliveryService* This);
+
+    /*** IBDA_GuideDataDeliveryService methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetGuideDataType)(
+        IBDA_GuideDataDeliveryService* This,
+        GUID *pguidDataType);
+
+    HRESULT (STDMETHODCALLTYPE *GetGuideData)(
+        IBDA_GuideDataDeliveryService* This,
+        ULONG *pulcbBufferLen,
+        BYTE *pbBuffer,
+        ULONG *pulGuideDataPercentageProgress);
+
+    HRESULT (STDMETHODCALLTYPE *RequestGuideDataUpdate)(
+        IBDA_GuideDataDeliveryService* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetTuneXmlFromServiceIdx)(
+        IBDA_GuideDataDeliveryService* This,
+        ULONG64 ul64ServiceIdx,
+        BSTR *pbstrTuneXml);
+
+    HRESULT (STDMETHODCALLTYPE *GetServices)(
+        IBDA_GuideDataDeliveryService* This,
+        ULONG *pulcbBufferLen,
+        BYTE *pbBuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetServiceInfoFromTuneXml)(
+        IBDA_GuideDataDeliveryService* This,
+        BSTR bstrTuneXml,
+        BSTR *pbstrServiceDescription);
+
+    END_INTERFACE
+} IBDA_GuideDataDeliveryServiceVtbl;
+interface IBDA_GuideDataDeliveryService {
+    CONST_VTBL IBDA_GuideDataDeliveryServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_GuideDataDeliveryService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_GuideDataDeliveryService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_GuideDataDeliveryService_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_GuideDataDeliveryService methods ***/
+#define IBDA_GuideDataDeliveryService_GetGuideDataType(This,pguidDataType) (This)->lpVtbl->GetGuideDataType(This,pguidDataType)
+#define IBDA_GuideDataDeliveryService_GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress) (This)->lpVtbl->GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress)
+#define IBDA_GuideDataDeliveryService_RequestGuideDataUpdate(This) (This)->lpVtbl->RequestGuideDataUpdate(This)
+#define IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml) (This)->lpVtbl->GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml)
+#define IBDA_GuideDataDeliveryService_GetServices(This,pulcbBufferLen,pbBuffer) (This)->lpVtbl->GetServices(This,pulcbBufferLen,pbBuffer)
+#define IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription) (This)->lpVtbl->GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_QueryInterface(IBDA_GuideDataDeliveryService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_GuideDataDeliveryService_AddRef(IBDA_GuideDataDeliveryService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_GuideDataDeliveryService_Release(IBDA_GuideDataDeliveryService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_GuideDataDeliveryService methods ***/
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetGuideDataType(IBDA_GuideDataDeliveryService* This,GUID *pguidDataType) {
+    return This->lpVtbl->GetGuideDataType(This,pguidDataType);
+}
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetGuideData(IBDA_GuideDataDeliveryService* This,ULONG *pulcbBufferLen,BYTE *pbBuffer,ULONG *pulGuideDataPercentageProgress) {
+    return This->lpVtbl->GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress);
+}
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_RequestGuideDataUpdate(IBDA_GuideDataDeliveryService* This) {
+    return This->lpVtbl->RequestGuideDataUpdate(This);
+}
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx(IBDA_GuideDataDeliveryService* This,ULONG64 ul64ServiceIdx,BSTR *pbstrTuneXml) {
+    return This->lpVtbl->GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml);
+}
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetServices(IBDA_GuideDataDeliveryService* This,ULONG *pulcbBufferLen,BYTE *pbBuffer) {
+    return This->lpVtbl->GetServices(This,pulcbBufferLen,pbBuffer);
+}
+static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml(IBDA_GuideDataDeliveryService* This,BSTR bstrTuneXml,BSTR *pbstrServiceDescription) {
+    return This->lpVtbl->GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetGuideDataType_Proxy(
+    IBDA_GuideDataDeliveryService* This,
+    GUID *pguidDataType);
+void __RPC_STUB IBDA_GuideDataDeliveryService_GetGuideDataType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetGuideData_Proxy(
+    IBDA_GuideDataDeliveryService* This,
+    ULONG *pulcbBufferLen,
+    BYTE *pbBuffer,
+    ULONG *pulGuideDataPercentageProgress);
+void __RPC_STUB IBDA_GuideDataDeliveryService_GetGuideData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_RequestGuideDataUpdate_Proxy(
+    IBDA_GuideDataDeliveryService* This);
+void __RPC_STUB IBDA_GuideDataDeliveryService_RequestGuideDataUpdate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx_Proxy(
+    IBDA_GuideDataDeliveryService* This,
+    ULONG64 ul64ServiceIdx,
+    BSTR *pbstrTuneXml);
+void __RPC_STUB IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetServices_Proxy(
+    IBDA_GuideDataDeliveryService* This,
+    ULONG *pulcbBufferLen,
+    BYTE *pbBuffer);
+void __RPC_STUB IBDA_GuideDataDeliveryService_GetServices_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml_Proxy(
+    IBDA_GuideDataDeliveryService* This,
+    BSTR bstrTuneXml,
+    BSTR *pbstrServiceDescription);
+void __RPC_STUB IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DRMService interface
+ */
+#ifndef __IBDA_DRMService_INTERFACE_DEFINED__
+#define __IBDA_DRMService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DRMService, 0xbff6b5bb, 0xb0ae, 0x484c, 0x9d,0xca, 0x73,0x52,0x8f,0xb0,0xb4,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bff6b5bb-b0ae-484c-9dca-73528fb0b46e")
+IBDA_DRMService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetDRM(
+        GUID *puuidNewDrm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDRMStatus(
+        BSTR *pbstrDrmUuidList,
+        GUID *DrmUuid) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DRMService, 0xbff6b5bb, 0xb0ae, 0x484c, 0x9d,0xca, 0x73,0x52,0x8f,0xb0,0xb4,0x6e)
+#endif
+#else
+typedef struct IBDA_DRMServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DRMService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DRMService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DRMService* This);
+
+    /*** IBDA_DRMService methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetDRM)(
+        IBDA_DRMService* This,
+        GUID *puuidNewDrm);
+
+    HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
+        IBDA_DRMService* This,
+        BSTR *pbstrDrmUuidList,
+        GUID *DrmUuid);
+
+    END_INTERFACE
+} IBDA_DRMServiceVtbl;
+interface IBDA_DRMService {
+    CONST_VTBL IBDA_DRMServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DRMService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DRMService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DRMService_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DRMService methods ***/
+#define IBDA_DRMService_SetDRM(This,puuidNewDrm) (This)->lpVtbl->SetDRM(This,puuidNewDrm)
+#define IBDA_DRMService_GetDRMStatus(This,pbstrDrmUuidList,DrmUuid) (This)->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DRMService_QueryInterface(IBDA_DRMService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DRMService_AddRef(IBDA_DRMService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DRMService_Release(IBDA_DRMService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DRMService methods ***/
+static FORCEINLINE HRESULT IBDA_DRMService_SetDRM(IBDA_DRMService* This,GUID *puuidNewDrm) {
+    return This->lpVtbl->SetDRM(This,puuidNewDrm);
+}
+static FORCEINLINE HRESULT IBDA_DRMService_GetDRMStatus(IBDA_DRMService* This,BSTR *pbstrDrmUuidList,GUID *DrmUuid) {
+    return This->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DRMService_SetDRM_Proxy(
+    IBDA_DRMService* This,
+    GUID *puuidNewDrm);
+void __RPC_STUB IBDA_DRMService_SetDRM_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRMService_GetDRMStatus_Proxy(
+    IBDA_DRMService* This,
+    BSTR *pbstrDrmUuidList,
+    GUID *DrmUuid);
+void __RPC_STUB IBDA_DRMService_GetDRMStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DRMService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_WMDRMSession interface
+ */
+#ifndef __IBDA_WMDRMSession_INTERFACE_DEFINED__
+#define __IBDA_WMDRMSession_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_WMDRMSession, 0x4be6fa3d, 0x07cd, 0x4139, 0x8b,0x80, 0x8c,0x18,0xba,0x3a,0xec,0x88);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4be6fa3d-07cd-4139-8b80-8c18ba3aec88")
+IBDA_WMDRMSession : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetStatus(
+        ULONG *MaxCaptureToken,
+        ULONG *MaxStreamingPid,
+        ULONG *MaxLicense,
+        ULONG *MinSecurityLevel,
+        ULONG *RevInfoSequenceNumber,
+        ULONGLONG *RevInfoIssuedTime,
+        ULONG *RevInfoTTL,
+        ULONG *RevListVersion,
+        ULONG *ulState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRevInfo(
+        ULONG ulRevInfoLen,
+        BYTE *pbRevInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCrl(
+        ULONG ulCrlLen,
+        BYTE *pbCrlLen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TransactMessage(
+        ULONG ulcbRequest,
+        BYTE *pbRequest,
+        ULONG *pulcbResponse,
+        BYTE *pbResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLicense(
+        GUID *uuidKey,
+        ULONG *pulPackageLen,
+        BYTE *pbPackage) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReissueLicense(
+        GUID *uuidKey) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RenewLicense(
+        ULONG ulInXmrLicenseLen,
+        BYTE *pbInXmrLicense,
+        ULONG ulEntitlementTokenLen,
+        BYTE *pbEntitlementToken,
+        ULONG *pulDescrambleStatus,
+        ULONG *pulOutXmrLicenseLen,
+        BYTE *pbOutXmrLicense) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetKeyInfo(
+        ULONG *pulKeyInfoLen,
+        BYTE *pbKeyInfo) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_WMDRMSession, 0x4be6fa3d, 0x07cd, 0x4139, 0x8b,0x80, 0x8c,0x18,0xba,0x3a,0xec,0x88)
+#endif
+#else
+typedef struct IBDA_WMDRMSessionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_WMDRMSession* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_WMDRMSession* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_WMDRMSession* This);
+
+    /*** IBDA_WMDRMSession methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetStatus)(
+        IBDA_WMDRMSession* This,
+        ULONG *MaxCaptureToken,
+        ULONG *MaxStreamingPid,
+        ULONG *MaxLicense,
+        ULONG *MinSecurityLevel,
+        ULONG *RevInfoSequenceNumber,
+        ULONGLONG *RevInfoIssuedTime,
+        ULONG *RevInfoTTL,
+        ULONG *RevListVersion,
+        ULONG *ulState);
+
+    HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
+        IBDA_WMDRMSession* This,
+        ULONG ulRevInfoLen,
+        BYTE *pbRevInfo);
+
+    HRESULT (STDMETHODCALLTYPE *SetCrl)(
+        IBDA_WMDRMSession* This,
+        ULONG ulCrlLen,
+        BYTE *pbCrlLen);
+
+    HRESULT (STDMETHODCALLTYPE *TransactMessage)(
+        IBDA_WMDRMSession* This,
+        ULONG ulcbRequest,
+        BYTE *pbRequest,
+        ULONG *pulcbResponse,
+        BYTE *pbResponse);
+
+    HRESULT (STDMETHODCALLTYPE *GetLicense)(
+        IBDA_WMDRMSession* This,
+        GUID *uuidKey,
+        ULONG *pulPackageLen,
+        BYTE *pbPackage);
+
+    HRESULT (STDMETHODCALLTYPE *ReissueLicense)(
+        IBDA_WMDRMSession* This,
+        GUID *uuidKey);
+
+    HRESULT (STDMETHODCALLTYPE *RenewLicense)(
+        IBDA_WMDRMSession* This,
+        ULONG ulInXmrLicenseLen,
+        BYTE *pbInXmrLicense,
+        ULONG ulEntitlementTokenLen,
+        BYTE *pbEntitlementToken,
+        ULONG *pulDescrambleStatus,
+        ULONG *pulOutXmrLicenseLen,
+        BYTE *pbOutXmrLicense);
+
+    HRESULT (STDMETHODCALLTYPE *GetKeyInfo)(
+        IBDA_WMDRMSession* This,
+        ULONG *pulKeyInfoLen,
+        BYTE *pbKeyInfo);
+
+    END_INTERFACE
+} IBDA_WMDRMSessionVtbl;
+interface IBDA_WMDRMSession {
+    CONST_VTBL IBDA_WMDRMSessionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_WMDRMSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_WMDRMSession_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_WMDRMSession_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_WMDRMSession methods ***/
+#define IBDA_WMDRMSession_GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState) (This)->lpVtbl->GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState)
+#define IBDA_WMDRMSession_SetRevInfo(This,ulRevInfoLen,pbRevInfo) (This)->lpVtbl->SetRevInfo(This,ulRevInfoLen,pbRevInfo)
+#define IBDA_WMDRMSession_SetCrl(This,ulCrlLen,pbCrlLen) (This)->lpVtbl->SetCrl(This,ulCrlLen,pbCrlLen)
+#define IBDA_WMDRMSession_TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse) (This)->lpVtbl->TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse)
+#define IBDA_WMDRMSession_GetLicense(This,uuidKey,pulPackageLen,pbPackage) (This)->lpVtbl->GetLicense(This,uuidKey,pulPackageLen,pbPackage)
+#define IBDA_WMDRMSession_ReissueLicense(This,uuidKey) (This)->lpVtbl->ReissueLicense(This,uuidKey)
+#define IBDA_WMDRMSession_RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense) (This)->lpVtbl->RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense)
+#define IBDA_WMDRMSession_GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo) (This)->lpVtbl->GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_WMDRMSession_QueryInterface(IBDA_WMDRMSession* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_WMDRMSession_AddRef(IBDA_WMDRMSession* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_WMDRMSession_Release(IBDA_WMDRMSession* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_WMDRMSession methods ***/
+static FORCEINLINE HRESULT IBDA_WMDRMSession_GetStatus(IBDA_WMDRMSession* This,ULONG *MaxCaptureToken,ULONG *MaxStreamingPid,ULONG *MaxLicense,ULONG *MinSecurityLevel,ULONG *RevInfoSequenceNumber,ULONGLONG *RevInfoIssuedTime,ULONG *RevInfoTTL,ULONG *RevListVersion,ULONG *ulState) {
+    return This->lpVtbl->GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_SetRevInfo(IBDA_WMDRMSession* This,ULONG ulRevInfoLen,BYTE *pbRevInfo) {
+    return This->lpVtbl->SetRevInfo(This,ulRevInfoLen,pbRevInfo);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_SetCrl(IBDA_WMDRMSession* This,ULONG ulCrlLen,BYTE *pbCrlLen) {
+    return This->lpVtbl->SetCrl(This,ulCrlLen,pbCrlLen);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_TransactMessage(IBDA_WMDRMSession* This,ULONG ulcbRequest,BYTE *pbRequest,ULONG *pulcbResponse,BYTE *pbResponse) {
+    return This->lpVtbl->TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_GetLicense(IBDA_WMDRMSession* This,GUID *uuidKey,ULONG *pulPackageLen,BYTE *pbPackage) {
+    return This->lpVtbl->GetLicense(This,uuidKey,pulPackageLen,pbPackage);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_ReissueLicense(IBDA_WMDRMSession* This,GUID *uuidKey) {
+    return This->lpVtbl->ReissueLicense(This,uuidKey);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_RenewLicense(IBDA_WMDRMSession* This,ULONG ulInXmrLicenseLen,BYTE *pbInXmrLicense,ULONG ulEntitlementTokenLen,BYTE *pbEntitlementToken,ULONG *pulDescrambleStatus,ULONG *pulOutXmrLicenseLen,BYTE *pbOutXmrLicense) {
+    return This->lpVtbl->RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMSession_GetKeyInfo(IBDA_WMDRMSession* This,ULONG *pulKeyInfoLen,BYTE *pbKeyInfo) {
+    return This->lpVtbl->GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetStatus_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG *MaxCaptureToken,
+    ULONG *MaxStreamingPid,
+    ULONG *MaxLicense,
+    ULONG *MinSecurityLevel,
+    ULONG *RevInfoSequenceNumber,
+    ULONGLONG *RevInfoIssuedTime,
+    ULONG *RevInfoTTL,
+    ULONG *RevListVersion,
+    ULONG *ulState);
+void __RPC_STUB IBDA_WMDRMSession_GetStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_SetRevInfo_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG ulRevInfoLen,
+    BYTE *pbRevInfo);
+void __RPC_STUB IBDA_WMDRMSession_SetRevInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_SetCrl_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG ulCrlLen,
+    BYTE *pbCrlLen);
+void __RPC_STUB IBDA_WMDRMSession_SetCrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_TransactMessage_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG ulcbRequest,
+    BYTE *pbRequest,
+    ULONG *pulcbResponse,
+    BYTE *pbResponse);
+void __RPC_STUB IBDA_WMDRMSession_TransactMessage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetLicense_Proxy(
+    IBDA_WMDRMSession* This,
+    GUID *uuidKey,
+    ULONG *pulPackageLen,
+    BYTE *pbPackage);
+void __RPC_STUB IBDA_WMDRMSession_GetLicense_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_ReissueLicense_Proxy(
+    IBDA_WMDRMSession* This,
+    GUID *uuidKey);
+void __RPC_STUB IBDA_WMDRMSession_ReissueLicense_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_RenewLicense_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG ulInXmrLicenseLen,
+    BYTE *pbInXmrLicense,
+    ULONG ulEntitlementTokenLen,
+    BYTE *pbEntitlementToken,
+    ULONG *pulDescrambleStatus,
+    ULONG *pulOutXmrLicenseLen,
+    BYTE *pbOutXmrLicense);
+void __RPC_STUB IBDA_WMDRMSession_RenewLicense_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetKeyInfo_Proxy(
+    IBDA_WMDRMSession* This,
+    ULONG *pulKeyInfoLen,
+    BYTE *pbKeyInfo);
+void __RPC_STUB IBDA_WMDRMSession_GetKeyInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_WMDRMSession_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_WMDRMTuner interface
+ */
+#ifndef __IBDA_WMDRMTuner_INTERFACE_DEFINED__
+#define __IBDA_WMDRMTuner_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_WMDRMTuner, 0x86d979cf, 0xa8a7, 0x4f94, 0xb5,0xfb, 0x14,0xc0,0xac,0xa6,0x8f,0xe6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("86d979cf-a8a7-4f94-b5fb-14c0aca68fe6")
+IBDA_WMDRMTuner : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE PurchaseEntitlement(
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG ulPurchaseTokenLen,
+        BYTE *pbPurchaseToken,
+        ULONG *pulDescrambleStatus,
+        ULONG *pulCaptureTokenLen,
+        BYTE *pbCaptureToken) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CancelCaptureToken(
+        ULONG ulCaptureTokenLen,
+        BYTE *pbCaptureToken) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPidProtection(
+        ULONG ulPid,
+        GUID *uuidKey) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPidProtection(
+        ULONG pulPid,
+        GUID *uuidKey) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSyncValue(
+        ULONG ulSyncValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStartCodeProfile(
+        ULONG *pulStartCodeProfileLen,
+        BYTE *pbStartCodeProfile) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_WMDRMTuner, 0x86d979cf, 0xa8a7, 0x4f94, 0xb5,0xfb, 0x14,0xc0,0xac,0xa6,0x8f,0xe6)
+#endif
+#else
+typedef struct IBDA_WMDRMTunerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_WMDRMTuner* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_WMDRMTuner* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_WMDRMTuner* This);
+
+    /*** IBDA_WMDRMTuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *PurchaseEntitlement)(
+        IBDA_WMDRMTuner* This,
+        ULONG ulDialogRequest,
+        BSTR bstrLanguage,
+        ULONG ulPurchaseTokenLen,
+        BYTE *pbPurchaseToken,
+        ULONG *pulDescrambleStatus,
+        ULONG *pulCaptureTokenLen,
+        BYTE *pbCaptureToken);
+
+    HRESULT (STDMETHODCALLTYPE *CancelCaptureToken)(
+        IBDA_WMDRMTuner* This,
+        ULONG ulCaptureTokenLen,
+        BYTE *pbCaptureToken);
+
+    HRESULT (STDMETHODCALLTYPE *SetPidProtection)(
+        IBDA_WMDRMTuner* This,
+        ULONG ulPid,
+        GUID *uuidKey);
+
+    HRESULT (STDMETHODCALLTYPE *GetPidProtection)(
+        IBDA_WMDRMTuner* This,
+        ULONG pulPid,
+        GUID *uuidKey);
+
+    HRESULT (STDMETHODCALLTYPE *SetSyncValue)(
+        IBDA_WMDRMTuner* This,
+        ULONG ulSyncValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetStartCodeProfile)(
+        IBDA_WMDRMTuner* This,
+        ULONG *pulStartCodeProfileLen,
+        BYTE *pbStartCodeProfile);
+
+    END_INTERFACE
+} IBDA_WMDRMTunerVtbl;
+interface IBDA_WMDRMTuner {
+    CONST_VTBL IBDA_WMDRMTunerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_WMDRMTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_WMDRMTuner_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_WMDRMTuner_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_WMDRMTuner methods ***/
+#define IBDA_WMDRMTuner_PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken)
+#define IBDA_WMDRMTuner_CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken)
+#define IBDA_WMDRMTuner_SetPidProtection(This,ulPid,uuidKey) (This)->lpVtbl->SetPidProtection(This,ulPid,uuidKey)
+#define IBDA_WMDRMTuner_GetPidProtection(This,pulPid,uuidKey) (This)->lpVtbl->GetPidProtection(This,pulPid,uuidKey)
+#define IBDA_WMDRMTuner_SetSyncValue(This,ulSyncValue) (This)->lpVtbl->SetSyncValue(This,ulSyncValue)
+#define IBDA_WMDRMTuner_GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile) (This)->lpVtbl->GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_QueryInterface(IBDA_WMDRMTuner* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_WMDRMTuner_AddRef(IBDA_WMDRMTuner* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_WMDRMTuner_Release(IBDA_WMDRMTuner* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_WMDRMTuner methods ***/
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_PurchaseEntitlement(IBDA_WMDRMTuner* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG ulPurchaseTokenLen,BYTE *pbPurchaseToken,ULONG *pulDescrambleStatus,ULONG *pulCaptureTokenLen,BYTE *pbCaptureToken) {
+    return This->lpVtbl->PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_CancelCaptureToken(IBDA_WMDRMTuner* This,ULONG ulCaptureTokenLen,BYTE *pbCaptureToken) {
+    return This->lpVtbl->CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_SetPidProtection(IBDA_WMDRMTuner* This,ULONG ulPid,GUID *uuidKey) {
+    return This->lpVtbl->SetPidProtection(This,ulPid,uuidKey);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_GetPidProtection(IBDA_WMDRMTuner* This,ULONG pulPid,GUID *uuidKey) {
+    return This->lpVtbl->GetPidProtection(This,pulPid,uuidKey);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_SetSyncValue(IBDA_WMDRMTuner* This,ULONG ulSyncValue) {
+    return This->lpVtbl->SetSyncValue(This,ulSyncValue);
+}
+static FORCEINLINE HRESULT IBDA_WMDRMTuner_GetStartCodeProfile(IBDA_WMDRMTuner* This,ULONG *pulStartCodeProfileLen,BYTE *pbStartCodeProfile) {
+    return This->lpVtbl->GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_PurchaseEntitlement_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG ulDialogRequest,
+    BSTR bstrLanguage,
+    ULONG ulPurchaseTokenLen,
+    BYTE *pbPurchaseToken,
+    ULONG *pulDescrambleStatus,
+    ULONG *pulCaptureTokenLen,
+    BYTE *pbCaptureToken);
+void __RPC_STUB IBDA_WMDRMTuner_PurchaseEntitlement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_CancelCaptureToken_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG ulCaptureTokenLen,
+    BYTE *pbCaptureToken);
+void __RPC_STUB IBDA_WMDRMTuner_CancelCaptureToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_SetPidProtection_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG ulPid,
+    GUID *uuidKey);
+void __RPC_STUB IBDA_WMDRMTuner_SetPidProtection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_GetPidProtection_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG pulPid,
+    GUID *uuidKey);
+void __RPC_STUB IBDA_WMDRMTuner_GetPidProtection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_SetSyncValue_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG ulSyncValue);
+void __RPC_STUB IBDA_WMDRMTuner_SetSyncValue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_GetStartCodeProfile_Proxy(
+    IBDA_WMDRMTuner* This,
+    ULONG *pulStartCodeProfileLen,
+    BYTE *pbStartCodeProfile);
+void __RPC_STUB IBDA_WMDRMTuner_GetStartCodeProfile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_WMDRMTuner_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DRIDRMService interface
+ */
+#ifndef __IBDA_DRIDRMService_INTERFACE_DEFINED__
+#define __IBDA_DRIDRMService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DRIDRMService, 0x1f9bc2a5, 0x44a3, 0x4c52, 0xaa,0xb1, 0x0b,0xbc,0xe5,0xa1,0x38,0x1d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1f9bc2a5-44a3-4c52-aab1-0bbce5a1381d")
+IBDA_DRIDRMService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetDRM(
+        BSTR bstrNewDrm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDRMStatus(
+        BSTR *pbstrDrmUuidList,
+        GUID *DrmUuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPairingStatus(
+        BDA_DrmPairingError *penumPairingStatus) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DRIDRMService, 0x1f9bc2a5, 0x44a3, 0x4c52, 0xaa,0xb1, 0x0b,0xbc,0xe5,0xa1,0x38,0x1d)
+#endif
+#else
+typedef struct IBDA_DRIDRMServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DRIDRMService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DRIDRMService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DRIDRMService* This);
+
+    /*** IBDA_DRIDRMService methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetDRM)(
+        IBDA_DRIDRMService* This,
+        BSTR bstrNewDrm);
+
+    HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
+        IBDA_DRIDRMService* This,
+        BSTR *pbstrDrmUuidList,
+        GUID *DrmUuid);
+
+    HRESULT (STDMETHODCALLTYPE *GetPairingStatus)(
+        IBDA_DRIDRMService* This,
+        BDA_DrmPairingError *penumPairingStatus);
+
+    END_INTERFACE
+} IBDA_DRIDRMServiceVtbl;
+interface IBDA_DRIDRMService {
+    CONST_VTBL IBDA_DRIDRMServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DRIDRMService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DRIDRMService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DRIDRMService_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DRIDRMService methods ***/
+#define IBDA_DRIDRMService_SetDRM(This,bstrNewDrm) (This)->lpVtbl->SetDRM(This,bstrNewDrm)
+#define IBDA_DRIDRMService_GetDRMStatus(This,pbstrDrmUuidList,DrmUuid) (This)->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid)
+#define IBDA_DRIDRMService_GetPairingStatus(This,penumPairingStatus) (This)->lpVtbl->GetPairingStatus(This,penumPairingStatus)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DRIDRMService_QueryInterface(IBDA_DRIDRMService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DRIDRMService_AddRef(IBDA_DRIDRMService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DRIDRMService_Release(IBDA_DRIDRMService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DRIDRMService methods ***/
+static FORCEINLINE HRESULT IBDA_DRIDRMService_SetDRM(IBDA_DRIDRMService* This,BSTR bstrNewDrm) {
+    return This->lpVtbl->SetDRM(This,bstrNewDrm);
+}
+static FORCEINLINE HRESULT IBDA_DRIDRMService_GetDRMStatus(IBDA_DRIDRMService* This,BSTR *pbstrDrmUuidList,GUID *DrmUuid) {
+    return This->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid);
+}
+static FORCEINLINE HRESULT IBDA_DRIDRMService_GetPairingStatus(IBDA_DRIDRMService* This,BDA_DrmPairingError *penumPairingStatus) {
+    return This->lpVtbl->GetPairingStatus(This,penumPairingStatus);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_SetDRM_Proxy(
+    IBDA_DRIDRMService* This,
+    BSTR bstrNewDrm);
+void __RPC_STUB IBDA_DRIDRMService_SetDRM_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_GetDRMStatus_Proxy(
+    IBDA_DRIDRMService* This,
+    BSTR *pbstrDrmUuidList,
+    GUID *DrmUuid);
+void __RPC_STUB IBDA_DRIDRMService_GetDRMStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_GetPairingStatus_Proxy(
+    IBDA_DRIDRMService* This,
+    BDA_DrmPairingError *penumPairingStatus);
+void __RPC_STUB IBDA_DRIDRMService_GetPairingStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DRIDRMService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_DRIWMDRMSession interface
+ */
+#ifndef __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__
+#define __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_DRIWMDRMSession, 0x05c690f8, 0x56db, 0x4bb2, 0xb0,0x53, 0x79,0xc1,0x20,0x98,0xbb,0x26);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("05c690f8-56db-4bb2-b053-79c12098bb26")
+IBDA_DRIWMDRMSession : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AcknowledgeLicense(
+        HRESULT hrLicenseAck) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessLicenseChallenge(
+        DWORD dwcbLicenseMessage,
+        BYTE *pbLicenseMessage,
+        DWORD *pdwcbLicenseResponse,
+        BYTE **ppbLicenseResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessRegistrationChallenge(
+        DWORD dwcbRegistrationMessage,
+        BYTE *pbRegistrationMessage,
+        DWORD *pdwcbRegistrationResponse,
+        BYTE **ppbRegistrationResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRevInfo(
+        DWORD dwRevInfoLen,
+        BYTE *pbRevInfo,
+        DWORD *pdwResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCrl(
+        DWORD dwCrlLen,
+        BYTE *pbCrlLen,
+        DWORD *pdwResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHMSAssociationData(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLastCardeaError(
+        DWORD *pdwError) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_DRIWMDRMSession, 0x05c690f8, 0x56db, 0x4bb2, 0xb0,0x53, 0x79,0xc1,0x20,0x98,0xbb,0x26)
+#endif
+#else
+typedef struct IBDA_DRIWMDRMSessionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_DRIWMDRMSession* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_DRIWMDRMSession* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_DRIWMDRMSession* This);
+
+    /*** IBDA_DRIWMDRMSession methods ***/
+    HRESULT (STDMETHODCALLTYPE *AcknowledgeLicense)(
+        IBDA_DRIWMDRMSession* This,
+        HRESULT hrLicenseAck);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessLicenseChallenge)(
+        IBDA_DRIWMDRMSession* This,
+        DWORD dwcbLicenseMessage,
+        BYTE *pbLicenseMessage,
+        DWORD *pdwcbLicenseResponse,
+        BYTE **ppbLicenseResponse);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessRegistrationChallenge)(
+        IBDA_DRIWMDRMSession* This,
+        DWORD dwcbRegistrationMessage,
+        BYTE *pbRegistrationMessage,
+        DWORD *pdwcbRegistrationResponse,
+        BYTE **ppbRegistrationResponse);
+
+    HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
+        IBDA_DRIWMDRMSession* This,
+        DWORD dwRevInfoLen,
+        BYTE *pbRevInfo,
+        DWORD *pdwResponse);
+
+    HRESULT (STDMETHODCALLTYPE *SetCrl)(
+        IBDA_DRIWMDRMSession* This,
+        DWORD dwCrlLen,
+        BYTE *pbCrlLen,
+        DWORD *pdwResponse);
+
+    HRESULT (STDMETHODCALLTYPE *GetHMSAssociationData)(
+        IBDA_DRIWMDRMSession* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetLastCardeaError)(
+        IBDA_DRIWMDRMSession* This,
+        DWORD *pdwError);
+
+    END_INTERFACE
+} IBDA_DRIWMDRMSessionVtbl;
+interface IBDA_DRIWMDRMSession {
+    CONST_VTBL IBDA_DRIWMDRMSessionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_DRIWMDRMSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_DRIWMDRMSession_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_DRIWMDRMSession_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_DRIWMDRMSession methods ***/
+#define IBDA_DRIWMDRMSession_AcknowledgeLicense(This,hrLicenseAck) (This)->lpVtbl->AcknowledgeLicense(This,hrLicenseAck)
+#define IBDA_DRIWMDRMSession_ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse) (This)->lpVtbl->ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse)
+#define IBDA_DRIWMDRMSession_ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse) (This)->lpVtbl->ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse)
+#define IBDA_DRIWMDRMSession_SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse) (This)->lpVtbl->SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse)
+#define IBDA_DRIWMDRMSession_SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse) (This)->lpVtbl->SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse)
+#define IBDA_DRIWMDRMSession_GetHMSAssociationData(This) (This)->lpVtbl->GetHMSAssociationData(This)
+#define IBDA_DRIWMDRMSession_GetLastCardeaError(This,pdwError) (This)->lpVtbl->GetLastCardeaError(This,pdwError)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_QueryInterface(IBDA_DRIWMDRMSession* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_DRIWMDRMSession_AddRef(IBDA_DRIWMDRMSession* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_DRIWMDRMSession_Release(IBDA_DRIWMDRMSession* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_DRIWMDRMSession methods ***/
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_AcknowledgeLicense(IBDA_DRIWMDRMSession* This,HRESULT hrLicenseAck) {
+    return This->lpVtbl->AcknowledgeLicense(This,hrLicenseAck);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_ProcessLicenseChallenge(IBDA_DRIWMDRMSession* This,DWORD dwcbLicenseMessage,BYTE *pbLicenseMessage,DWORD *pdwcbLicenseResponse,BYTE **ppbLicenseResponse) {
+    return This->lpVtbl->ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_ProcessRegistrationChallenge(IBDA_DRIWMDRMSession* This,DWORD dwcbRegistrationMessage,BYTE *pbRegistrationMessage,DWORD *pdwcbRegistrationResponse,BYTE **ppbRegistrationResponse) {
+    return This->lpVtbl->ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_SetRevInfo(IBDA_DRIWMDRMSession* This,DWORD dwRevInfoLen,BYTE *pbRevInfo,DWORD *pdwResponse) {
+    return This->lpVtbl->SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_SetCrl(IBDA_DRIWMDRMSession* This,DWORD dwCrlLen,BYTE *pbCrlLen,DWORD *pdwResponse) {
+    return This->lpVtbl->SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_GetHMSAssociationData(IBDA_DRIWMDRMSession* This) {
+    return This->lpVtbl->GetHMSAssociationData(This);
+}
+static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_GetLastCardeaError(IBDA_DRIWMDRMSession* This,DWORD *pdwError) {
+    return This->lpVtbl->GetLastCardeaError(This,pdwError);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_AcknowledgeLicense_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    HRESULT hrLicenseAck);
+void __RPC_STUB IBDA_DRIWMDRMSession_AcknowledgeLicense_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_ProcessLicenseChallenge_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    DWORD dwcbLicenseMessage,
+    BYTE *pbLicenseMessage,
+    DWORD *pdwcbLicenseResponse,
+    BYTE **ppbLicenseResponse);
+void __RPC_STUB IBDA_DRIWMDRMSession_ProcessLicenseChallenge_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_ProcessRegistrationChallenge_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    DWORD dwcbRegistrationMessage,
+    BYTE *pbRegistrationMessage,
+    DWORD *pdwcbRegistrationResponse,
+    BYTE **ppbRegistrationResponse);
+void __RPC_STUB IBDA_DRIWMDRMSession_ProcessRegistrationChallenge_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_SetRevInfo_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    DWORD dwRevInfoLen,
+    BYTE *pbRevInfo,
+    DWORD *pdwResponse);
+void __RPC_STUB IBDA_DRIWMDRMSession_SetRevInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_SetCrl_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    DWORD dwCrlLen,
+    BYTE *pbCrlLen,
+    DWORD *pdwResponse);
+void __RPC_STUB IBDA_DRIWMDRMSession_SetCrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_GetHMSAssociationData_Proxy(
+    IBDA_DRIWMDRMSession* This);
+void __RPC_STUB IBDA_DRIWMDRMSession_GetHMSAssociationData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_GetLastCardeaError_Proxy(
+    IBDA_DRIWMDRMSession* This,
+    DWORD *pdwError);
+void __RPC_STUB IBDA_DRIWMDRMSession_GetLastCardeaError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_MUX interface
+ */
+#ifndef __IBDA_MUX_INTERFACE_DEFINED__
+#define __IBDA_MUX_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_MUX, 0x942aafec, 0x4c05, 0x4c74, 0xb8,0xeb, 0x87,0x06,0xc2,0xa4,0x94,0x3f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("942aafec-4c05-4c74-b8eb-8706c2a4943f")
+IBDA_MUX : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPidList(
+        ULONG ulPidListCount,
+        BDA_MUX_PIDLISTITEM *pbPidListBuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPidList(
+        ULONG *pulPidListCount,
+        BDA_MUX_PIDLISTITEM *pbPidListBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_MUX, 0x942aafec, 0x4c05, 0x4c74, 0xb8,0xeb, 0x87,0x06,0xc2,0xa4,0x94,0x3f)
+#endif
+#else
+typedef struct IBDA_MUXVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_MUX* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_MUX* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_MUX* This);
+
+    /*** IBDA_MUX methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPidList)(
+        IBDA_MUX* This,
+        ULONG ulPidListCount,
+        BDA_MUX_PIDLISTITEM *pbPidListBuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetPidList)(
+        IBDA_MUX* This,
+        ULONG *pulPidListCount,
+        BDA_MUX_PIDLISTITEM *pbPidListBuffer);
+
+    END_INTERFACE
+} IBDA_MUXVtbl;
+interface IBDA_MUX {
+    CONST_VTBL IBDA_MUXVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IBDA_MUX_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IBDA_MUX_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IBDA_MUX_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_MUX_GetPidList(This,pbPidListBuffer) (This)->lpVtbl->GetPidList(This,pbPidListBuffer)
+/*** IBDA_MUX methods ***/
 #define IBDA_MUX_SetPidList(This,ulPidListCount,pbPidListBuffer) (This)->lpVtbl->SetPidList(This,ulPidListCount,pbPidListBuffer)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IBDA_UserActivityService
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#define IBDA_MUX_GetPidList(This,pulPidListCount,pbPidListBuffer) (This)->lpVtbl->GetPidList(This,pulPidListCount,pbPidListBuffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_MUX_QueryInterface(IBDA_MUX* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_MUX_AddRef(IBDA_MUX* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_MUX_Release(IBDA_MUX* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_MUX methods ***/
+static FORCEINLINE HRESULT IBDA_MUX_SetPidList(IBDA_MUX* This,ULONG ulPidListCount,BDA_MUX_PIDLISTITEM *pbPidListBuffer) {
+    return This->lpVtbl->SetPidList(This,ulPidListCount,pbPidListBuffer);
+}
+static FORCEINLINE HRESULT IBDA_MUX_GetPidList(IBDA_MUX* This,ULONG *pulPidListCount,BDA_MUX_PIDLISTITEM *pbPidListBuffer) {
+    return This->lpVtbl->GetPidList(This,pulPidListCount,pbPidListBuffer);
+}
 #endif
-DECLARE_INTERFACE_(IBDA_UserActivityService,IUnknown)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_MUX_SetPidList_Proxy(
+    IBDA_MUX* This,
+    ULONG ulPidListCount,
+    BDA_MUX_PIDLISTITEM *pbPidListBuffer);
+void __RPC_STUB IBDA_MUX_SetPidList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_MUX_GetPidList_Proxy(
+    IBDA_MUX* This,
+    ULONG *pulPidListCount,
+    BDA_MUX_PIDLISTITEM *pbPidListBuffer);
+void __RPC_STUB IBDA_MUX_GetPidList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_MUX_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_TransportStreamSelector interface
+ */
+#ifndef __IBDA_TransportStreamSelector_INTERFACE_DEFINED__
+#define __IBDA_TransportStreamSelector_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_TransportStreamSelector, 0x1dcfafe9, 0xb45e, 0x41b3, 0xbb,0x2a, 0x56,0x1e,0xb1,0x29,0xae,0x98);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1dcfafe9-b45e-41b3-bb2a-561eb129ae98")
+IBDA_TransportStreamSelector : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE SetTSID(
+        USHORT usTSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTSInformation(
+        ULONG *pulTSInformationBufferLen,
+        BYTE *pbTSInformationBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_TransportStreamSelector, 0x1dcfafe9, 0xb45e, 0x41b3, 0xbb,0x2a, 0x56,0x1e,0xb1,0x29,0xae,0x98)
+#endif
+#else
+typedef struct IBDA_TransportStreamSelectorVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_TransportStreamSelector* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IBDA_UserActivityService methods */
-    STDMETHOD_(HRESULT,GetUserActivityInterval)(THIS_ DWORD *pdwActivityInterval) PURE;
-    STDMETHOD_(HRESULT,SetCurrentTunerUseReason)(THIS_ DWORD dwUseReason) PURE;
-    STDMETHOD_(HRESULT,UserActivityDetected)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_TransportStreamSelector* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_TransportStreamSelector* This);
+
+    /*** IBDA_TransportStreamSelector methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetTSID)(
+        IBDA_TransportStreamSelector* This,
+        USHORT usTSID);
+
+    HRESULT (STDMETHODCALLTYPE *GetTSInformation)(
+        IBDA_TransportStreamSelector* This,
+        ULONG *pulTSInformationBufferLen,
+        BYTE *pbTSInformationBuffer);
 
     END_INTERFACE
+} IBDA_TransportStreamSelectorVtbl;
+interface IBDA_TransportStreamSelector {
+    CONST_VTBL IBDA_TransportStreamSelectorVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDA_TransportStreamSelector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDA_TransportStreamSelector_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDA_TransportStreamSelector_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDA_TransportStreamSelector methods ***/
+#define IBDA_TransportStreamSelector_SetTSID(This,usTSID) (This)->lpVtbl->SetTSID(This,usTSID)
+#define IBDA_TransportStreamSelector_GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer) (This)->lpVtbl->GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_TransportStreamSelector_QueryInterface(IBDA_TransportStreamSelector* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_TransportStreamSelector_AddRef(IBDA_TransportStreamSelector* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_TransportStreamSelector_Release(IBDA_TransportStreamSelector* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_TransportStreamSelector methods ***/
+static FORCEINLINE HRESULT IBDA_TransportStreamSelector_SetTSID(IBDA_TransportStreamSelector* This,USHORT usTSID) {
+    return This->lpVtbl->SetTSID(This,usTSID);
+}
+static FORCEINLINE HRESULT IBDA_TransportStreamSelector_GetTSInformation(IBDA_TransportStreamSelector* This,ULONG *pulTSInformationBufferLen,BYTE *pbTSInformationBuffer) {
+    return This->lpVtbl->GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_TransportStreamSelector_SetTSID_Proxy(
+    IBDA_TransportStreamSelector* This,
+    USHORT usTSID);
+void __RPC_STUB IBDA_TransportStreamSelector_SetTSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_TransportStreamSelector_GetTSInformation_Proxy(
+    IBDA_TransportStreamSelector* This,
+    ULONG *pulTSInformationBufferLen,
+    BYTE *pbTSInformationBuffer);
+void __RPC_STUB IBDA_TransportStreamSelector_GetTSInformation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_TransportStreamSelector_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDA_UserActivityService interface
+ */
+#ifndef __IBDA_UserActivityService_INTERFACE_DEFINED__
+#define __IBDA_UserActivityService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDA_UserActivityService, 0x53b14189, 0xe478, 0x4b7a, 0xa1,0xff, 0x50,0x6d,0xb4,0xb9,0x9d,0xfe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("53b14189-e478-4b7a-a1ff-506db4b99dfe")
+IBDA_UserActivityService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetCurrentTunerUseReason(
+        DWORD dwUseReason) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserActivityInterval(
+        DWORD *pdwActivityInterval) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UserActivityDetected(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDA_UserActivityService, 0x53b14189, 0xe478, 0x4b7a, 0xa1,0xff, 0x50,0x6d,0xb4,0xb9,0x9d,0xfe)
+#endif
+#else
+typedef struct IBDA_UserActivityServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDA_UserActivityService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDA_UserActivityService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDA_UserActivityService* This);
+
+    /*** IBDA_UserActivityService methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetCurrentTunerUseReason)(
+        IBDA_UserActivityService* This,
+        DWORD dwUseReason);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserActivityInterval)(
+        IBDA_UserActivityService* This,
+        DWORD *pdwActivityInterval);
+
+    HRESULT (STDMETHODCALLTYPE *UserActivityDetected)(
+        IBDA_UserActivityService* This);
+
+    END_INTERFACE
+} IBDA_UserActivityServiceVtbl;
+interface IBDA_UserActivityService {
+    CONST_VTBL IBDA_UserActivityServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IBDA_UserActivityService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IBDA_UserActivityService_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IBDA_UserActivityService_Release(This) (This)->lpVtbl->Release(This)
-#define IBDA_UserActivityService_GetUserActivityInterval(This,pdwActivityInterval) (This)->lpVtbl->GetUserActivityInterval(This,pdwActivityInterval)
+/*** IBDA_UserActivityService methods ***/
 #define IBDA_UserActivityService_SetCurrentTunerUseReason(This,dwUseReason) (This)->lpVtbl->SetCurrentTunerUseReason(This,dwUseReason)
-#define IBDA_UserActivityService_UserActivityDetected() (This)->lpVtbl->UserActivityDetected(This)
-#endif /*COBJMACROS*/
+#define IBDA_UserActivityService_GetUserActivityInterval(This,pdwActivityInterval) (This)->lpVtbl->GetUserActivityInterval(This,pdwActivityInterval)
+#define IBDA_UserActivityService_UserActivityDetected(This) (This)->lpVtbl->UserActivityDetected(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDA_UserActivityService_QueryInterface(IBDA_UserActivityService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDA_UserActivityService_AddRef(IBDA_UserActivityService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDA_UserActivityService_Release(IBDA_UserActivityService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDA_UserActivityService methods ***/
+static FORCEINLINE HRESULT IBDA_UserActivityService_SetCurrentTunerUseReason(IBDA_UserActivityService* This,DWORD dwUseReason) {
+    return This->lpVtbl->SetCurrentTunerUseReason(This,dwUseReason);
+}
+static FORCEINLINE HRESULT IBDA_UserActivityService_GetUserActivityInterval(IBDA_UserActivityService* This,DWORD *pdwActivityInterval) {
+    return This->lpVtbl->GetUserActivityInterval(This,pdwActivityInterval);
+}
+static FORCEINLINE HRESULT IBDA_UserActivityService_UserActivityDetected(IBDA_UserActivityService* This) {
+    return This->lpVtbl->UserActivityDetected(This);
+}
+#endif
+#endif
 
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-#endif /*__INC_BDAIFACE__*/
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_SetCurrentTunerUseReason_Proxy(
+    IBDA_UserActivityService* This,
+    DWORD dwUseReason);
+void __RPC_STUB IBDA_UserActivityService_SetCurrentTunerUseReason_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_GetUserActivityInterval_Proxy(
+    IBDA_UserActivityService* This,
+    DWORD *pdwActivityInterval);
+void __RPC_STUB IBDA_UserActivityService_GetUserActivityInterval_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_UserActivityDetected_Proxy(
+    IBDA_UserActivityService* This);
+void __RPC_STUB IBDA_UserActivityService_UserActivityDetected_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDA_UserActivityService_INTERFACE_DEFINED__ */
+
+#define SID_BDA_EasMessage __uuidof (IBDA_EasMessage)
+#define SID_BDA_TransportStreamInfo __uuidof (IBDA_TransportStreamInfo)
+#define SID_BDA_ConditionalAccess __uuidof (IBDA_ConditionalAccess)
+#define SID_BDA_DiagnosticProperties __uuidof (IBDA_DiagnosticProperties)
+#define SID_BDA_DRM __uuidof (IBDA_DRM)
+#define SID_BDA_NameValueService __uuidof (IBDA_NameValueService)
+#define SID_BDA_ConditionalAccessEx __uuidof (IBDA_ConditionalAccessEx)
+#define SID_BDA_ISDBConditionalAccess __uuidof (IBDA_ISDBConditionalAccess)
+#define SID_BDA_EventingService __uuidof (IBDA_EventingService)
+#define SID_BDA_AUX __uuidof (IBDA_AUX)
+#define SID_BDA_Encoder __uuidof (IBDA_Encoder)
+#define SID_BDA_FDC __uuidof (IBDA_FDC
+#define SID_BDA_GuideDataDeliveryService  __uuidof (IBDA_GuideDataDeliveryService)
+#define SID_BDA_DRMService __uuidof (IBDA_DRMService)
+#define SID_BDA_WMDRMSession __uuidof (IBDA_WMDRMSession)
+#define SID_BDA_WMDRMTuner __uuidof (IBDA_WMDRMTuner)
+#define SID_BDA_DRIDRMService __uuidof (IBDA_DRIDRMService)
+#define SID_BDA_DRIWMDRMSession __uuidof (IBDA_DRIWMDRMSession)
+#define SID_BDA_MUX __uuidof (IBDA_MUX)
+#define SID_BDA_TransportStreamSelector __uuidof (IBDA_TransportStreamSelector)
+#define SID_BDA_UserActivityService __uuidof (IBDA_UserActivityService)
+
+DEFINE_GUID(CLSID_PBDA_Encoder_DATA_TYPE, 0x728fd6bc, 0x5546, 0x4716, 0xb1, 0x03, 0xf8, 0x99, 0xf5, 0xa1, 0xfa, 0x68);
+DEFINE_GUID(CLSID_PBDA_FDC_DATA_TYPE, 0xe7dbf9a0, 0x22ab, 0x4047, 0x8e, 0x67, 0xef, 0x9a, 0xd5, 0x4, 0xe7, 0x29);
+DEFINE_GUID(CLSID_PBDA_GDDS_DATA_TYPE, 0xC80C0DF3, 0x6052, 0x4c16, 0x9F, 0x56, 0xC4, 0x4C, 0x21, 0xF7, 0x3C, 0x45);
+DEFINE_GUID(PBDA_AUX_CONNECTOR_TYPE_SVideo, 0xa0e905f4,0x24c9,0x4a54, 0xb7, 0x61, 0x21, 0x33, 0x55, 0xef, 0xc1, 0x3A);
+DEFINE_GUID(PBDA_AUX_CONNECTOR_TYPE_Composite, 0xf6298b4c,0xc725,0x4d42, 0x84, 0x9b, 0x41, 0x0b, 0xbb, 0x14, 0xea, 0x62);
+DEFINE_GUID(CLSID_PBDA_AUX_DATA_TYPE, 0xfd456373, 0x3323, 0x4090, 0xad, 0xca, 0x8e, 0xd4, 0x5f, 0x55, 0xcf, 0x10);
+#endif
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bdaiface_h__ */
diff --git a/x86_64-w64-mingw32/include/bdaiface_enums.h b/x86_64-w64-mingw32/include/bdaiface_enums.h
new file mode 100644
index 0000000..9a262e0
--- /dev/null
+++ b/x86_64-w64-mingw32/include/bdaiface_enums.h
@@ -0,0 +1,96 @@
+/**

+ * This file is part of the mingw-w64 runtime package.

+ * No warranty is given; refer to the file DISCLAIMER within this package.

+ */
+#ifndef BDAIFACE_ENUMS_H
+#define BDAIFACE_ENUMS_H
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum SmartCardStatusType {
+  CardInserted = 0,
+  CardRemoved,
+  CardError,
+  CardDataChanged,
+  CardFirmwareUpgrade
+} SmartCardStatusType;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+ enum SmartCardAssociationType {
+  NotAssociated = 0,
+  Associated,
+  AssociationUnknown
+} SmartCardAssociationType;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+ enum LocationCodeSchemeType {
+  SCTE_18 = 0
+} LocationCodeSchemeType;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum EntitlementType {
+  Entitled = 0,
+  NotEntitled,
+  TechnicalFailure
+} EntitlementType;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum UICloseReasonType {
+  NotReady = 0,
+  UserClosed,
+  SystemClosed,
+  DeviceClosed,
+  ErrorClosed
+} UICloseReasonType;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_DrmPairingError {
+  BDA_DrmPairing_Succeeded = 0,
+  BDA_DrmPairing_HardwareFailure,
+  BDA_DrmPairing_NeedRevocationData,
+  BDA_DrmPairing_NeedIndiv,
+  BDA_DrmPairing_Other,
+  BDA_DrmPairing_DrmInitFailed,
+  BDA_DrmPairing_DrmNotPaired,
+  BDA_DrmPairing_DrmRePairSoon,
+  BDA_DrmPairing_Aborted,
+  BDA_DrmPairing_NeedSDKUpdate
+} BDA_DrmPairingError;
+
+typedef struct EALocationCodeType {
+  LocationCodeSchemeType LocationCodeScheme;
+  BYTE state_code;
+  BYTE county_subdivision;
+  WORD county_code;
+} EALocationCodeType;
+
+typedef struct SmartCardApplication {
+  ApplicationTypeType ApplicationType;
+  USHORT ApplicationVersion;
+  BSTR pbstrApplicationName;
+  BSTR pbstrApplicationURL;
+} SmartCardApplication;
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/bdatypes.h b/x86_64-w64-mingw32/include/bdatypes.h
index 7bca649..8ddc3be 100644
--- a/x86_64-w64-mingw32/include/bdatypes.h
+++ b/x86_64-w64-mingw32/include/bdatypes.h
@@ -1,62 +1,25 @@
-/*
- * bdatypes.h
- *
- * This file is part of the ReactOS DXSDK package.
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-
 #ifndef _BDATYPES_
 #define _BDATYPES_ 1
 
-#define MIN_DIMENSION				1
+#include <winapifamily.h>
 
-#ifdef __midl
-#define V1_ENUM [v1_enum]
-#else
-#define V1_ENUM
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#define BDA_PLP_ID_NOT_SET -1
+
+#define MIN_DIMENSION 1
+
+typedef LONG PBDARESULT;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
 #endif
-
-#define BDA_FREQUENCY_NOT_SET			-1
-#define BDA_FREQUENCY_NOT_DEFINED		 0
-#define BDA_RANGE_NOT_SET			-1
-#define BDA_RANGE_NOT_DEFINED			 0
-#define BDA_CHAN_BANDWITH_NOT_SET		-1
-#define BDA_CHAN_BANDWITH_NOT_DEFINED		 0
-#define BDA_FREQUENCY_MULTIPLIER_NOT_SET	-1
-#define BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED	 0
-
-typedef struct _BDA_TEMPLATE_CONNECTION {
-  ULONG FromNodeType;
-  ULONG FromNodePinType;
-  ULONG ToNodeType;
-  ULONG ToNodePinType;
-} BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
-
-typedef struct _BDA_TEMPLATE_PIN_JOINT {
-  ULONG uliTemplateConnection;
-  ULONG ulcInstancesMax;
-} BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
-
-typedef struct tagKS_BDA_FRAME_INFO {
-  ULONG ExtendedHeaderSize;
-  DWORD dwFrameFlags;
-  ULONG ulEvent;
-  ULONG ulChannelNumber;
-  ULONG ulSubchannelNumber;
-  ULONG ulReason;
-} KS_BDA_FRAME_INFO, *PKS_BDA_FRAME_INFO;
-
-typedef enum {
+  enum BDA_EVENT_ID {
   BDA_EVENT_SIGNAL_LOSS = 0,
   BDA_EVENT_SIGNAL_LOCK,
   BDA_EVENT_DATA_START,
@@ -79,158 +42,169 @@
   BDA_EVENT_SMART_CARD_REMOVED
 } BDA_EVENT_ID, *PBDA_EVENT_ID;
 
-typedef struct _BDA_ETHERNET_ADDRESS {
-  BYTE rgbAddress[6];
-} BDA_ETHERNET_ADDRESS, *PBDA_ETHERNET_ADDRESS;
-
-typedef struct _BDA_ETHERNET_ADDRESS_LIST {
-  ULONG ulcAddresses;
-  BDA_ETHERNET_ADDRESS rgAddressl[MIN_DIMENSION];
-} BDA_ETHERNET_ADDRESS_LIST, *PBDA_ETHERNET_ADDRESS_LIST;
-
-typedef enum {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_MULTICAST_MODE {
   BDA_PROMISCUOUS_MULTICAST = 0,
   BDA_FILTERED_MULTICAST,
   BDA_NO_MULTICAST
 } BDA_MULTICAST_MODE, *PBDA_MULTICAST_MODE;
 
-typedef struct _BDA_IPv4_ADDRESS {
-  BYTE rgbAddress[4];
-} BDA_IPv4_ADDRESS, *PBDA_IPv4_ADDRESS;
-
-typedef struct _BDA_IPv4_ADDRESS_LIST {
-  ULONG ulcAddresses;
-  BDA_IPv4_ADDRESS rgAddressl[MIN_DIMENSION];
-} BDA_IPv4_ADDRESS_LIST, *PBDA_IPv4_ADDRESS_LIST;
-
-typedef struct _BDA_IPv6_ADDRESS {
-  BYTE rgbAddress[6];
-} BDA_IPv6_ADDRESS, *PBDA_IPv6_ADDRESS;
-
-typedef struct _BDA_IPv6_ADDRESS_LIST {
-  ULONG ulcAddresses;
-  BDA_IPv6_ADDRESS rgAddressl[MIN_DIMENSION];
-} BDA_IPv6_ADDRESS_LIST, *PBDA_IPv6_ADDRESS_LIST;
-
-typedef enum {
-  BDA_CHANGES_COMPLETE = 0,
-  BDA_CHANGES_PENDING
-} BDA_CHANGE_STATE, *PBDA_CHANGE_STATE;
-
-typedef enum {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_SIGNAL_STATE {
   BDA_SIGNAL_UNAVAILABLE = 0,
   BDA_SIGNAL_INACTIVE,
   BDA_SIGNAL_ACTIVE
 } BDA_SIGNAL_STATE, *PBDA_SIGNAL_STATE;
 
-typedef struct _BDANODE_DESCRIPTOR {
-  ULONG ulBdaNodeType;
-  GUID guidFunction;
-  GUID guidName;
-} BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_CHANGE_STATE {
+  BDA_CHANGES_COMPLETE = 0,
+  BDA_CHANGES_PENDING
+} BDA_CHANGE_STATE, *PBDA_CHANGE_STATE;
 
-typedef enum {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum MEDIA_SAMPLE_CONTENT {
   MEDIA_TRANSPORT_PACKET,
   MEDIA_ELEMENTARY_STREAM,
   MEDIA_MPEG2_PSI,
   MEDIA_TRANSPORT_PAYLOAD
 } MEDIA_SAMPLE_CONTENT;
 
-typedef struct _BDA_TABLE_SECTION {
-  ULONG ulPrimarySectionId;
-  ULONG ulSecondarySectionId;
-  ULONG ulcbSectionLength;
-  ULONG argbSectionData[MIN_DIMENSION];
-} BDA_TABLE_SECTION, *PBDA_TABLE_SECTION;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ISDBCAS_REQUEST_ID {
+  ISDBCAS_REQUEST_ID_EMG = 0x38,
+  ISDBCAS_REQUEST_ID_EMD = 0x3a,
+} ISDBCAS_REQUEST_ID;
 
-typedef struct {
-  ULONG ulPID;
-  MEDIA_SAMPLE_CONTENT MediaSampleContent;
-} PID_MAP;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum MUX_PID_TYPE {
+  PID_OTHER = -1,
+  PID_ELEMENTARY_STREAM,
+  PID_MPEG2_SECTION_PSI_SI
+} MUX_PID_TYPE;
 
-typedef struct _BDA_PID_MAP {
-  MEDIA_SAMPLE_CONTENT MediaSampleContent;
-  ULONG ulcPIDs;
-  ULONG aulPIDs[MIN_DIMENSION];
-} BDA_PID_MAP, *PBDA_PID_MAP;
-
-typedef struct _BDA_PID_UNMAP {
-  ULONG ulcPIDs;
-  ULONG aulPIDs[MIN_DIMENSION];
-} BDA_PID_UNMAP, *PBDA_PID_UNMAP;
-
-typedef enum DVBSystemType {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum DVBSystemType {
   DVB_Cable,
   DVB_Terrestrial,
   DVB_Satellite,
+  ISDB_Terrestrial,
+  ISDB_Satellite
 } DVBSystemType;
 
-typedef struct _BDA_CA_MODULE_UI {
-  ULONG ulFormat;
-  ULONG ulbcDesc;
-  ULONG ulDesc[MIN_DIMENSION];
-} BDA_CA_MODULE_UI, *PBDA_CA_MODULE_UI;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Channel {
+  BDA_UNDEFINED_CHANNEL = -1
+} BDA_Channel;
 
-typedef struct _BDA_PROGRAM_PID_LIST {
-  ULONG ulProgramNumber;
-  ULONG ulcPIDs;
-  ULONG ulPID[MIN_DIMENSION];
-} BDA_PROGRAM_PID_LIST, *PBDA_PROGRAM_PID_LIST;
-
-V1_ENUM enum {
-  BDA_UNDEFINED_CHANNEL = -1,
-};
-
-typedef V1_ENUM enum ComponentCategory {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ComponentCategory {
   CategoryNotSet = -1,
   CategoryOther = 0,
   CategoryVideo,
   CategoryAudio,
   CategoryText,
+  CategorySubtitles,
+  CategoryCaptions,
+  CategorySuperimpose,
   CategoryData,
+  CATEGORY_COUNT
 } ComponentCategory;
 
-typedef enum ComponentStatus {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ComponentStatus {
   StatusActive,
   StatusInactive,
-  StatusUnavailable,
+  StatusUnavailable
 } ComponentStatus;
 
-typedef enum ATSCComponentTypeFlags {
-  ATSCCT_AC3 = 0x00000001,
-} ATSCComponentTypeFlags;
-
-typedef V1_ENUM enum MPEG2StreamType {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum MPEG2StreamType {
   BDA_UNITIALIZED_MPEG2STREAMTYPE = -1,
-  Reserved1 = 0x0,
-  ISO_IEC_11172_2_VIDEO = Reserved1 + 1,
-  ISO_IEC_13818_2_VIDEO = ISO_IEC_11172_2_VIDEO + 1,
-  ISO_IEC_11172_3_AUDIO = ISO_IEC_13818_2_VIDEO + 1,
-  ISO_IEC_13818_3_AUDIO = ISO_IEC_11172_3_AUDIO + 1,
-  ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1,
-  ISO_IEC_13818_1_PES = ISO_IEC_13818_1_PRIVATE_SECTION + 1,
-  ISO_IEC_13522_MHEG = ISO_IEC_13818_1_PES + 1,
-  ANNEX_A_DSM_CC = ISO_IEC_13522_MHEG + 1,
-  ITU_T_REC_H_222_1 = ANNEX_A_DSM_CC + 1,
-  ISO_IEC_13818_6_TYPE_A = ITU_T_REC_H_222_1 + 1,
-  ISO_IEC_13818_6_TYPE_B = ISO_IEC_13818_6_TYPE_A + 1,
-  ISO_IEC_13818_6_TYPE_C = ISO_IEC_13818_6_TYPE_B + 1,
-  ISO_IEC_13818_6_TYPE_D = ISO_IEC_13818_6_TYPE_C + 1,
-  ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1,
-  ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1,
-  USER_PRIVATE = ISO_IEC_13818_1_RESERVED + 1
+  Reserved1 = 0x00,
+  ISO_IEC_11172_2_VIDEO = 0x01,
+  ISO_IEC_13818_2_VIDEO = 0x02,
+  ISO_IEC_11172_3_AUDIO = 0x03,
+  ISO_IEC_13818_3_AUDIO = 0x04,
+  ISO_IEC_13818_1_PRIVATE_SECTION = 0x05,
+  ISO_IEC_13818_1_PES = 0x06,
+  ISO_IEC_13522_MHEG = 0x07,
+  ANNEX_A_DSM_CC = 0x08,
+  ITU_T_REC_H_222_1 = 0x09,
+  ISO_IEC_13818_6_TYPE_A = 0x0a,
+  ISO_IEC_13818_6_TYPE_B = 0x0b,
+  ISO_IEC_13818_6_TYPE_C = 0x0c,
+  ISO_IEC_13818_6_TYPE_D = 0x0d,
+  ISO_IEC_13818_1_AUXILIARY = 0x0e,
+  ISO_IEC_13818_7_AUDIO = 0x0f,
+  ISO_IEC_14496_2_VISUAL = 0x10,
+  ISO_IEC_14496_3_AUDIO = 0x11,
+  ISO_IEC_14496_1_IN_PES = 0x12,
+  ISO_IEC_14496_1_IN_SECTION = 0x13,
+  ISO_IEC_13818_6_DOWNLOAD = 0x14,
+  METADATA_IN_PES = 0x15,
+  METADATA_IN_SECTION = 0x16,
+  METADATA_IN_DATA_CAROUSEL = 0x17,
+  METADATA_IN_OBJECT_CAROUSEL = 0x18,
+  METADATA_IN_DOWNLOAD_PROTOCOL = 0x19,
+  IRPM_STREAMM = 0x1a,
+  ITU_T_H264 = 0x1b,
+  ISO_IEC_13818_1_RESERVED = 0x1c,
+  USER_PRIVATE = 0x10,
+  ISO_IEC_USER_PRIVATE = 0x80,
+  DOLBY_AC3_AUDIO = 0x81,
+  DOLBY_DIGITAL_PLUS_AUDIO_ATSC = 0x87
 } MPEG2StreamType;
 
-typedef struct _MPEG2_TRANSPORT_STRIDE {
-  DWORD dwOffset;
-  DWORD dwPacketLength;
-  DWORD dwStride;
-} MPEG2_TRANSPORT_STRIDE, *PMPEG2_TRANSPORT_STRIDE;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ATSCComponentTypeFlags {
+  ATSCCT_AC3 = 0x1
+} ATSCComponentTypeFlags;
 
-typedef V1_ENUM enum BinaryConvolutionCodeRate {
-  BDA_BCC_RATE_NOT_SET       = -1,
-  BDA_BCC_RATE_NOT_DEFINED   = 0,
-  BDA_BCC_RATE_1_2           = 1,
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BinaryConvolutionCodeRate {
+  BDA_BCC_RATE_NOT_SET = -1,
+  BDA_BCC_RATE_NOT_DEFINED = 0,
+  BDA_BCC_RATE_1_2 = 1,
   BDA_BCC_RATE_2_3,
   BDA_BCC_RATE_3_4,
   BDA_BCC_RATE_3_5,
@@ -244,33 +218,32 @@
   BDA_BCC_RATE_6_7,
   BDA_BCC_RATE_8_9,
   BDA_BCC_RATE_9_10,
-  BDA_BCC_RATE_MAX 
+  BDA_BCC_RATE_MAX
 } BinaryConvolutionCodeRate;
 
-typedef V1_ENUM enum SpectralInversion {
-  BDA_SPECTRAL_INVERSION_NOT_SET = -1,
-  BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
-  BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
-  BDA_SPECTRAL_INVERSION_NORMAL,
-  BDA_SPECTRAL_INVERSION_INVERTED,
-  BDA_SPECTRAL_INVERSION_MAX
-} SpectralInversion;
-
-typedef V1_ENUM enum FECMethod {
-  BDA_FEC_METHOD_NOT_SET       = -1,
-  BDA_FEC_METHOD_NOT_DEFINED   = 0,
-  BDA_FEC_VITERBI              = 1,
-  BDA_FEC_RS_204_188           = 2,
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum FECMethod {
+  BDA_FEC_METHOD_NOT_SET = -1,
+  BDA_FEC_METHOD_NOT_DEFINED = 0,
+  BDA_FEC_VITERBI = 1,
+  BDA_FEC_RS_204_188,
   BDA_FEC_LDPC,
   BDA_FEC_BCH,
   BDA_FEC_RS_147_130,
   BDA_FEC_MAX
 } FECMethod;
 
-typedef V1_ENUM enum ModulationType {
-  BDA_MOD_NOT_SET            = -1,
-  BDA_MOD_NOT_DEFINED        = 0,
-  BDA_MOD_16QAM              = 1,
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ModulationType {
+  BDA_MOD_NOT_SET = -1,
+  BDA_MOD_NOT_DEFINED = 0,
+  BDA_MOD_16QAM = 1,
   BDA_MOD_32QAM,
   BDA_MOD_64QAM,
   BDA_MOD_80QAM,
@@ -305,142 +278,525 @@
   BDA_MOD_DIRECTV,
   BDA_MOD_ISDB_T_TMCC,
   BDA_MOD_ISDB_S_TMCC,
-  BDA_MOD_MAX 
+  BDA_MOD_MAX
 } ModulationType;
 
-typedef enum tagScanModulationTypes {
-  BDA_SCAN_MOD_16QAM                            = 0x00000001,
-  BDA_SCAN_MOD_32QAM                            = 0x00000002,
-  BDA_SCAN_MOD_64QAM                            = 0x00000004,
-  BDA_SCAN_MOD_80QAM                            = 0x00000008,
-  BDA_SCAN_MOD_96QAM                            = 0x00000010,
-  BDA_SCAN_MOD_112QAM                           = 0x00000020,
-  BDA_SCAN_MOD_128QAM                           = 0x00000040,
-  BDA_SCAN_MOD_160QAM                           = 0x00000080,
-  BDA_SCAN_MOD_192QAM                           = 0x00000100,
-  BDA_SCAN_MOD_224QAM                           = 0x00000200,
-  BDA_SCAN_MOD_256QAM                           = 0x00000400,
-  BDA_SCAN_MOD_320QAM                           = 0x00000800,
-  BDA_SCAN_MOD_384QAM                           = 0x00001000,
-  BDA_SCAN_MOD_448QAM                           = 0x00002000,
-  BDA_SCAN_MOD_512QAM                           = 0x00004000,
-  BDA_SCAN_MOD_640QAM                           = 0x00008000,
-  BDA_SCAN_MOD_768QAM                           = 0x00010000,
-  BDA_SCAN_MOD_896QAM                           = 0x00020000,
-  BDA_SCAN_MOD_1024QAM                          = 0x00040000,
-  BDA_SCAN_MOD_QPSK                             = 0x00080000,
-  BDA_SCAN_MOD_BPSK                             = 0x00100000,
-  BDA_SCAN_MOD_OQPSK                            = 0x00200000,
-  BDA_SCAN_MOD_8VSB                             = 0x00400000,
-  BDA_SCAN_MOD_16VSB                            = 0x00800000,
-  BDA_SCAN_MOD_AM_RADIO                         = 0x01000000,
-  BDA_SCAN_MOD_FM_RADIO                         = 0x02000000,
-  BDA_SCAN_MOD_8PSK                             = 0x04000000,
-  BDA_SCAN_MOD_RF                               = 0x08000000, /* analog TV */
-  ScanModulationTypesMask_MCE_DigitalCable      = BDA_MOD_64QAM | BDA_MOD_256QAM,
-  ScanModulationTypesMask_MCE_TerrestrialATSC   = BDA_MOD_8VSB,
-  ScanModulationTypesMask_MCE_AnalogTv          = BDA_MOD_RF,
-  ScanModulationTypesMask_MCE_All_TV            = 0xffffffff,
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum tagScanModulationTypes {
+  BDA_SCAN_MOD_16QAM = 0x00000001,
+  BDA_SCAN_MOD_32QAM = 0x00000002,
+  BDA_SCAN_MOD_64QAM = 0x00000004,
+  BDA_SCAN_MOD_80QAM = 0x00000008,
+  BDA_SCAN_MOD_96QAM = 0x00000010,
+  BDA_SCAN_MOD_112QAM = 0x00000020,
+  BDA_SCAN_MOD_128QAM = 0x00000040,
+  BDA_SCAN_MOD_160QAM = 0x00000080,
+  BDA_SCAN_MOD_192QAM = 0x00000100,
+  BDA_SCAN_MOD_224QAM = 0x00000200,
+  BDA_SCAN_MOD_256QAM = 0x00000400,
+  BDA_SCAN_MOD_320QAM = 0x00000800,
+  BDA_SCAN_MOD_384QAM = 0x00001000,
+  BDA_SCAN_MOD_448QAM = 0x00002000,
+  BDA_SCAN_MOD_512QAM = 0x00004000,
+  BDA_SCAN_MOD_640QAM = 0x00008000,
+  BDA_SCAN_MOD_768QAM = 0x00010000,
+  BDA_SCAN_MOD_896QAM = 0x00020000,
+  BDA_SCAN_MOD_1024QAM = 0x00040000,
+  BDA_SCAN_MOD_QPSK = 0x00080000,
+  BDA_SCAN_MOD_BPSK = 0x00100000,
+  BDA_SCAN_MOD_OQPSK = 0x00200000,
+  BDA_SCAN_MOD_8VSB = 0x00400000,
+  BDA_SCAN_MOD_16VSB = 0x00800000,
+  BDA_SCAN_MOD_AM_RADIO = 0x01000000,
+  BDA_SCAN_MOD_FM_RADIO = 0x02000000,
+  BDA_SCAN_MOD_8PSK = 0x04000000,
+  BDA_SCAN_MOD_RF = 0x08000000,
+  ScanModulationTypesMask_MCE_DigitalCable = BDA_MOD_64QAM |
+  BDA_MOD_256QAM,
+  ScanModulationTypesMask_MCE_TerrestrialATSC = BDA_MOD_8VSB,
+  ScanModulationTypesMask_MCE_AnalogTv = BDA_MOD_RF,
+  ScanModulationTypesMask_MCE_All_TV = 0xffffffff,
+  ScanModulationTypesMask_DVBC = BDA_MOD_64QAM | BDA_SCAN_MOD_128QAM |
+  BDA_MOD_256QAM,
+  BDA_SCAN_MOD_16APSK = 0x10000000,
+  BDA_SCAN_MOD_32APSK = 0x20000000,
 } ScanModulationTypes;
 
-typedef V1_ENUM enum TransmissionMode {
-  BDA_XMIT_MODE_NOT_SET          = -1,
-  BDA_XMIT_MODE_NOT_DEFINED      = 0,
-  BDA_XMIT_MODE_2K,
-  BDA_XMIT_MODE_8K,
-  BDA_XMIT_MODE_4K,
-  BDA_XMIT_MODE_2K_INTERLEAVED,
-  BDA_XMIT_MODE_4K_INTERLEAVED,
-  BDA_XMIT_MODE_MAX 
-} TransmissionMode;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum SpectralInversion {
+  BDA_SPECTRAL_INVERSION_NOT_SET = -1,
+  BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
+  BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
+  BDA_SPECTRAL_INVERSION_NORMAL,
+  BDA_SPECTRAL_INVERSION_INVERTED,
+  BDA_SPECTRAL_INVERSION_MAX
+} SpectralInversion;
 
-
-typedef V1_ENUM enum Polarisation {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum Polarisation {
   BDA_POLARISATION_NOT_SET = -1,
   BDA_POLARISATION_NOT_DEFINED = 0,
   BDA_POLARISATION_LINEAR_H = 1,
   BDA_POLARISATION_LINEAR_V,
   BDA_POLARISATION_CIRCULAR_L,
   BDA_POLARISATION_CIRCULAR_R,
-  BDA_POLARISATION_MAX,
+  BDA_POLARISATION_MAX
 } Polarisation;
 
-typedef V1_ENUM enum GuardInterval {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum LNB_Source {
+  BDA_LNB_SOURCE_NOT_SET = -1,
+  BDA_LNB_SOURCE_NOT_DEFINED = 0,
+  BDA_LNB_SOURCE_A = 1,
+  BDA_LNB_SOURCE_B = 2,
+  BDA_LNB_SOURCE_C = 3,
+  BDA_LNB_SOURCE_D = 4,
+  BDA_LNB_SOURCE_MAX
+} LNB_Source;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum GuardInterval {
   BDA_GUARD_NOT_SET = -1,
   BDA_GUARD_NOT_DEFINED = 0,
   BDA_GUARD_1_32 = 1,
   BDA_GUARD_1_16,
   BDA_GUARD_1_8,
   BDA_GUARD_1_4,
-  BDA_GUARD_MAX,
+  BDA_GUARD_1_128,
+  BDA_GUARD_19_128,
+  BDA_GUARD_19_256,
+  BDA_GUARD_MAX
 } GuardInterval;
 
-typedef V1_ENUM enum HierarchyAlpha {
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum HierarchyAlpha {
   BDA_HALPHA_NOT_SET = -1,
   BDA_HALPHA_NOT_DEFINED = 0,
   BDA_HALPHA_1 = 1,
   BDA_HALPHA_2,
   BDA_HALPHA_4,
-  BDA_HALPHA_MAX,
+  BDA_HALPHA_MAX
 } HierarchyAlpha;
 
-typedef enum _BDA_Comp_Flags {
-  BDACOMP_NOT_DEFINED             = 0x00000000,
-  BDACOMP_EXCLUDE_TS_FROM_TR      = 0x00000001,
-  BDACOMP_INCLUDE_LOCATOR_IN_TR   = 0x00000002 
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum TransmissionMode {
+  BDA_XMIT_MODE_NOT_SET = -1,
+  BDA_XMIT_MODE_NOT_DEFINED = 0,
+  BDA_XMIT_MODE_2K = 1,
+  BDA_XMIT_MODE_8K,
+  BDA_XMIT_MODE_4K,
+  BDA_XMIT_MODE_2K_INTERLEAVED,
+  BDA_XMIT_MODE_4K_INTERLEAVED,
+  BDA_XMIT_MODE_1K,
+  BDA_XMIT_MODE_16K,
+  BDA_XMIT_MODE_32K,
+  BDA_XMIT_MODE_MAX
+} TransmissionMode;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum RollOff {
+  BDA_ROLL_OFF_NOT_SET = -1,
+  BDA_ROLL_OFF_NOT_DEFINED = 0,
+  BDA_ROLL_OFF_20 = 1,
+  BDA_ROLL_OFF_25,
+  BDA_ROLL_OFF_35,
+  BDA_ROLL_OFF_MAX
+} RollOff;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum Pilot {
+  BDA_PILOT_NOT_SET = -1,
+  BDA_PILOT_NOT_DEFINED = 0,
+  BDA_PILOT_OFF = 1,
+  BDA_PILOT_ON,
+  BDA_PILOT_MAX
+} Pilot;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Frequency {
+  BDA_FREQUENCY_NOT_SET = -1,
+  BDA_FREQUENCY_NOT_DEFINED = 0
+} BDA_Frequency;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Range {
+  BDA_RANGE_NOT_SET = -1,
+  BDA_RANGE_NOT_DEFINED = 0
+} BDA_Range;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Channel_Bandwidth {
+  BDA_CHAN_BANDWITH_NOT_SET = -1,
+  BDA_CHAN_BANDWITH_NOT_DEFINED = 0
+} BDA_Channel_Bandwidth;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Frequency_Multiplier {
+  BDA_FREQUENCY_MULTIPLIER_NOT_SET = -1,
+  BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED = 0
+} BDA_Frequency_Multiplier;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_Comp_Flags {
+  BDACOMP_NOT_DEFINED = 0x00000000,
+  BDACOMP_EXCLUDE_TS_FROM_TR = 0x00000001,
+  BDACOMP_INCLUDE_LOCATOR_IN_TR = 0x00000002,
+  BDACOMP_INCLUDE_COMPONENTS_IN_TR = 0x00000004
 } BDA_Comp_Flags;
 
-#if (_WIN32_WINNT >= 0x0601)
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum ApplicationTypeType {
+  SCTE28_ConditionalAccess = 0,
+  SCTE28_POD_Host_Binding_Information,
+  SCTE28_IPService,
+  SCTE28_NetworkInterface_SCTE55_2,
+  SCTE28_NetworkInterface_SCTE55_1,
+  SCTE28_CopyProtection,
+  SCTE28_Diagnostic,
+  SCTE28_Undesignated,
+  SCTE28_Reserved,
+} ApplicationTypeType;
 
-typedef enum _BDA_CONDITIONALACCESS_MMICLOSEREASON {
-  CONDITIONALACCESS_UNSPECIFIED                 = 0,
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_CONDITIONALACCESS_REQUESTTYPE {
+  CONDITIONALACCESS_ACCESS_UNSPECIFIED = 0,
+  CONDITIONALACCESS_ACCESS_NOT_POSSIBLE,
+  CONDITIONALACCESS_ACCESS_POSSIBLE,
+  CONDITIONALACCESS_ACCESS_POSSIBLE_NO_STREAMING_DISRUPTION
+} BDA_CONDITIONALACCESS_REQUESTTYPE;
+
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_CONDITIONALACCESS_MMICLOSEREASON {
+  CONDITIONALACCESS_UNSPECIFIED = 0,
   CONDITIONALACCESS_CLOSED_ITSELF,
   CONDITIONALACCESS_TUNER_REQUESTED_CLOSE,
   CONDITIONALACCESS_DIALOG_TIMEOUT,
   CONDITIONALACCESS_DIALOG_FOCUS_CHANGE,
   CONDITIONALACCESS_DIALOG_USER_DISMISSED,
-  CONDITIONALACCESS_DIALOG_USER_NOT_AVAILABLE 
+  CONDITIONALACCESS_DIALOG_USER_NOT_AVAILABLE
 } BDA_CONDITIONALACCESS_MMICLOSEREASON;
 
-typedef enum BDA_CONDITIONALACCESS_REQUESTTYPE {
-  CONDITIONALACCESS_ACCESS_UNSPECIFIED                        = 0,
-  CONDITIONALACCESS_ACCESS_NOT_POSSIBLE,
-  CONDITIONALACCESS_ACCESS_POSSIBLE,
-  CONDITIONALACCESS_ACCESS_POSSIBLE_NO_STREAMING_DISRUPTION 
-} BDA_CONDITIONALACCESS_REQUESTTYPE;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_CONDITIONALACCESS_SESSION_RESULT {
+  CONDITIONALACCESS_SUCCESSFULL = 0,
+  CONDITIONALACCESS_ENDED_NOCHANGE,
+  CONDITIONALACCESS_ABORTED
+} BDA_CONDITIONALACCESS_SESSION_RESULT;
 
-typedef enum MUX_PID_TYPE {
-  PID_OTHER                  = -1,
-  PID_ELEMENTARY_STREAM,
-  PID_MPEG2_SECTION_PSI_SI 
-} MUX_PID_TYPE;
+typedef
+#ifdef __WIDL__
+  [v1_enum]
+#endif
+  enum BDA_DISCOVERY_STATE {
+  BDA_DISCOVERY_UNSPECIFIED = 0,
+  BDA_DISCOVERY_REQUIRED,
+  BDA_DISCOVERY_COMPLETE
+} BDA_DISCOVERY_STATE;
 
-typedef enum Pilot {
-  BDA_PILOT_NOT_SET       = -1,
-  BDA_PILOT_NOT_DEFINED   = 0,
-  BDA_PILOT_OFF           = 1,
-  BDA_PILOT_ON,
-  BDA_PILOT_MAX 
-} Pilot;
+typedef struct _BDA_TEMPLATE_CONNECTION {
+  ULONG FromNodeType;
+  ULONG FromNodePinType;
+  ULONG ToNodeType;
+  ULONG ToNodePinType;
+} BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
 
-typedef enum RollOff {
-  BDA_ROLL_OFF_NOT_SET       = -1,
-  BDA_ROLL_OFF_NOT_DEFINED   = 0,
-  BDA_ROLL_OFF_20            = 1,
-  BDA_ROLL_OFF_25,
-  BDA_ROLL_OFF_35,
-  BDA_ROLL_OFF_MAX 
-} RollOff;
+typedef struct _BDA_TEMPLATE_PIN_JOINT {
+  ULONG uliTemplateConnection;
+  ULONG ulcInstancesMax;
+} BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
 
-typedef enum _LNB_Source {
-  BDA_LNB_SOURCE_NOT_SET       = -1,
-  BDA_LNB_SOURCE_NOT_DEFINED   = 0,
-  BDA_LNB_SOURCE_A             = 1,
-  BDA_LNB_SOURCE_B             = 2,
-  BDA_LNB_SOURCE_C             = 3,
-  BDA_LNB_SOURCE_D             = 4,
-  BDA_LNB_SOURCE_MAX           = 5 
-} LNB_Source;
+typedef struct tagKS_BDA_FRAME_INFO {
+  ULONG ExtendedHeaderSize;
+  DWORD dwFrameFlags;
+  ULONG ulEvent;
+  ULONG ulChannelNumber;
+  ULONG ulSubchannelNumber;
+  ULONG ulReason;
+} KS_BDA_FRAME_INFO, *PKS_BDA_FRAME_INFO;
+
+typedef struct _BDA_ETHERNET_ADDRESS {
+  BYTE rgbAddress[6];
+} BDA_ETHERNET_ADDRESS, *PBDA_ETHERNET_ADDRESS;
+
+typedef struct _BDA_ETHERNET_ADDRESS_LIST {
+  ULONG ulcAddresses;
+  BDA_ETHERNET_ADDRESS rgAddressl[MIN_DIMENSION];
+} BDA_ETHERNET_ADDRESS_LIST, *PBDA_ETHERNET_ADDRESS_LIST;
+
+typedef struct _BDA_IPv4_ADDRESS {
+  BYTE rgbAddress[4];
+} BDA_IPv4_ADDRESS, *PBDA_IPv4_ADDRESS;
+
+typedef struct _BDA_IPv4_ADDRESS_LIST {
+  ULONG ulcAddresses;
+  BDA_IPv4_ADDRESS rgAddressl[MIN_DIMENSION];
+} BDA_IPv4_ADDRESS_LIST, *PBDA_IPv4_ADDRESS_LIST;
+
+typedef struct _BDA_IPv6_ADDRESS {
+  BYTE rgbAddress[6];
+} BDA_IPv6_ADDRESS, *PBDA_IPv6_ADDRESS;
+
+typedef struct _BDA_IPv6_ADDRESS_LIST {
+  ULONG ulcAddresses;
+  BDA_IPv6_ADDRESS rgAddressl[MIN_DIMENSION];
+} BDA_IPv6_ADDRESS_LIST, *PBDA_IPv6_ADDRESS_LIST;
+
+typedef struct _BDANODE_DESCRIPTOR {
+  ULONG ulBdaNodeType;
+  GUID guidFunction;
+  GUID guidName;
+} BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
+
+typedef struct _BDA_TABLE_SECTION {
+  ULONG ulPrimarySectionId;
+  ULONG ulSecondarySectionId;
+  ULONG ulcbSectionLength;
+  ULONG argbSectionData[MIN_DIMENSION];
+} BDA_TABLE_SECTION, *PBDA_TABLE_SECTION;
+
+typedef struct _BDA_DISEQC_SEND {
+  ULONG ulRequestId;
+  ULONG ulPacketLength;
+  BYTE argbPacketData[8];
+} BDA_DISEQC_SEND, *PBDA_DISEQC_SEND;
+
+typedef struct _BDA_DISEQC_RESPONSE {
+  ULONG ulRequestId;
+  ULONG ulPacketLength;
+  BYTE argbPacketData[8];
+} BDA_DISEQC_RESPONSE, *PBDA_DISEQC_RESPONSE;
+
+typedef struct {
+  ULONG ulPID;
+  MEDIA_SAMPLE_CONTENT MediaSampleContent;
+} PID_MAP;
+
+typedef struct _BDA_PID_MAP {
+  MEDIA_SAMPLE_CONTENT MediaSampleContent;
+  ULONG ulcPIDs;
+  ULONG aulPIDs[MIN_DIMENSION];
+} BDA_PID_MAP, *PBDA_PID_MAP;
+
+typedef struct _BDA_PID_UNMAP {
+  ULONG ulcPIDs;
+  ULONG aulPIDs[MIN_DIMENSION];
+} BDA_PID_UNMAP, *PBDA_PID_UNMAP;
+
+typedef struct _BDA_CA_MODULE_UI {
+  ULONG ulFormat;
+  ULONG ulbcDesc;
+  ULONG ulDesc[MIN_DIMENSION];
+} BDA_CA_MODULE_UI, *PBDA_CA_MODULE_UI;
+
+typedef struct _BDA_PROGRAM_PID_LIST {
+  ULONG ulProgramNumber;
+  ULONG ulcPIDs;
+  ULONG ulPID[MIN_DIMENSION];
+} BDA_PROGRAM_PID_LIST, *PBDA_PROGRAM_PID_LIST;
+
+typedef struct _BDA_DRM_DRMSTATUS {
+  PBDARESULT lResult;
+  GUID DRMuuid;
+  ULONG ulDrmUuidListStringSize;
+  GUID argbDrmUuidListString[MIN_DIMENSION];
+} BDA_DRM_DRMSTATUS, *PBDA_DRM_DRMSTATUS;
+
+typedef struct _BDA_WMDRM_STATUS {
+  PBDARESULT lResult;
+  ULONG ulMaxCaptureTokenSize;
+  ULONG uMaxStreamingPid;
+  ULONG ulMaxLicense;
+  ULONG ulMinSecurityLevel;
+  ULONG ulRevInfoSequenceNumber;
+  ULONGLONG ulRevInfoIssuedTime;
+  ULONG ulRevListVersion;
+  ULONG ulRevInfoTTL;
+  ULONG ulState;
+} BDA_WMDRM_STATUS, *PBDA_WMDRM_STATUS;
+
+typedef struct _BDA_WMDRM_KEYINFOLIST {
+  PBDARESULT lResult;
+  ULONG ulKeyuuidBufferLen;
+  GUID argKeyuuidBuffer[MIN_DIMENSION];
+} BDA_WMDRM_KEYINFOLIST, *PBDA_WMDRM_KEYINFOLIST;
+
+typedef struct _BDA_BUFFER {
+  PBDARESULT lResult;
+  ULONG ulBufferSize;
+  BYTE argbBuffer[MIN_DIMENSION];
+} BDA_BUFFER, *PBDA_BUFFER;
+
+typedef struct _BDA_WMDRM_RENEWLICENSE {
+  PBDARESULT lResult;
+  ULONG ulDescrambleStatus;
+  ULONG ulXmrLicenseOutputLength;
+  BYTE argbXmrLicenceOutputBuffer[MIN_DIMENSION];
+} BDA_WMDRM_RENEWLICENSE, *PBDA_WMDRM_RENEWLICENSE;
+
+typedef struct _BDA_WMDRMTUNER_PIDPROTECTION {
+  PBDARESULT lResult;
+  GUID uuidKeyID;
+} BDA_WMDRMTUNER_PIDPROTECTION, *PBDA_WMDRMTUNER_PIDPROTECTION;
+
+typedef struct _BDA_WMDRMTUNER_PURCHASEENTITLEMENT {
+  PBDARESULT lResult;
+  ULONG ulDescrambleStatus;
+  ULONG ulCaptureTokenLength;
+  BYTE argbCaptureTokenBuffer[MIN_DIMENSION];
+} BDA_WMDRMTUNER_PURCHASEENTITLEMENT, *PBDA_WMDRMTUNER_PURCHASEENTITLEMENT;
+
+typedef struct _BDA_TUNER_TUNERSTATE {
+  PBDARESULT lResult;
+  ULONG ulTuneLength;
+  BYTE argbTuneData [MIN_DIMENSION];
+} BDA_TUNER_TUNERSTATE, *PBDA_TUNER_TUNERSTATE;
+
+typedef struct _BDA_TUNER_DIAGNOSTICS {
+  PBDARESULT lResult;
+  ULONG ulSignalLevel;
+  ULONG ulSignalLevelQuality;
+  ULONG ulSignalNoiseRatio;
+} BDA_TUNER_DIAGNOSTICS, *PBDA_TUNER_DIAGNOSTICS;
+
+typedef struct _BDA_STRING {
+  PBDARESULT lResult;
+  ULONG ulStringSize;
+  BYTE argbString[MIN_DIMENSION];
+} BDA_STRING, *PBDA_STRING;
+
+typedef struct _BDA_SCAN_CAPABILTIES {
+  PBDARESULT lResult;
+  UINT64 ul64AnalogStandardsSupported;
+} BDA_SCAN_CAPABILTIES, *PBDA_SCAN_CAPABILTIES;
+
+typedef struct _BDA_SCAN_STATE {
+  PBDARESULT lResult;
+  ULONG ulSignalLock;
+  ULONG ulSecondsLeft;
+  ULONG ulCurrentFrequency;
+} BDA_SCAN_STATE, *PBDA_SCAN_STATE;
+
+typedef struct _BDA_SCAN_START {
+  PBDARESULT lResult;
+  ULONG LowerFrequency;
+  ULONG HigerFrequency;
+} BDA_SCAN_START, *PBDA_SCAN_START;
+
+typedef struct _BDA_GDDS_DATATYPE {
+  PBDARESULT lResult;
+  GUID uuidDataType;
+} BDA_GDDS_DATATYPE, *P_BDA_GDDS_DATATYPE;
+
+typedef struct _BDA_GDDS_DATA {
+  PBDARESULT lResult;
+  ULONG ulDataLength;
+  ULONG ulPercentageProgress;
+  BYTE argbData [MIN_DIMENSION];
+} BDA_GDDS_DATA, *P_BDA_GDDS_DATA;
+
+typedef struct _BDA_USERACTIVITY_INTERVAL {
+  PBDARESULT lResult;
+  ULONG ulActivityInterval;
+} BDA_USERACTIVITY_INTERVAL, *P_BDA_USERACTIVITY_INTERVAL;
+
+typedef struct _BDA_CAS_CHECK_ENTITLEMENTTOKEN {
+  PBDARESULT lResult;
+  ULONG ulDescrambleStatus;
+} BDA_CAS_CHECK_ENTITLEMENTTOKEN, *PBDA_CAS_CHECK_ENTITLEMENTTOKEN;
+
+typedef struct _BDA_CAS_CLOSE_MMIDIALOG {
+  PBDARESULT lResult;
+  ULONG SessionResult;
+} BDA_CAS_CLOSE_MMIDIALOG, *PBDA_CAS_CLOSE_MMIDIALOG;
+
+typedef struct _BDA_CAS_REQUESTTUNERDATA {
+  UCHAR ucRequestPriority;
+  UCHAR ucRequestReason;
+  UCHAR ucRequestConsequences;
+  ULONG ulEstimatedTime;
+} BDA_CAS_REQUESTTUNERDATA, *PBDA_CAS_REQUESTTUNERDATA;
+
+typedef struct _BDA_CAS_OPENMMIDATA {
+  ULONG ulDialogNumber;
+  ULONG ulDialogRequest;
+  GUID uuidDialogType;
+  USHORT usDialogDataLength;
+  BYTE argbDialogData[MIN_DIMENSION];
+} BDA_CAS_OPENMMIDATA, *PBDA_CAS_OPENMMIDATA;
+
+typedef struct _BDA_CAS_CLOSEMMIDATA {
+  ULONG ulDialogNumber;
+} BDA_CAS_CLOSEMMIDATA, *PBDA_CAS_CLOSEMMIDATA;
+
+#pragma pack(push, 1)
+typedef struct _BDA_ISDBCAS_REQUESTHEADER {
+  BYTE bInstruction;
+  BYTE bReserved[3];
+  ULONG ulDataLength;
+  BYTE argbIsdbCommand[MIN_DIMENSION];
+} BDA_ISDBCAS_REQUESTHEADER, *PBDA_ISDBCAS_REQUESTHEADER;
+
+typedef struct _BDA_ISDBCAS_RESPONSEDATA {
+  PBDARESULT lResult;
+  ULONG ulRequestID;
+  ULONG ulIsdbStatus;
+  ULONG ulIsdbDataSize;
+  BYTE argbIsdbCommandData[MIN_DIMENSION];
+} BDA_ISDBCAS_RESPONSEDATA, *PBDA_ISDBCAS_RESPONSEDATA;
 
 typedef struct _BDA_ISDBCAS_EMG_REQ {
   BYTE bCLA;
@@ -448,20 +804,69 @@
   BYTE bP1;
   BYTE bP2;
   BYTE bLC;
-  BYTE bCardId;
+  BYTE bCardId[6];
   BYTE bProtocol;
   BYTE bCABroadcasterGroupId;
   BYTE bMessageControl;
   BYTE bMessageCode[MIN_DIMENSION];
 } BDA_ISDBCAS_EMG_REQ, *PBDA_ISDBCAS_EMG_REQ;
+#pragma pack(pop)
 
+#pragma pack(push, 2)
 typedef struct _BDA_MUX_PIDLISTITEM {
-  USHORT       usPIDNumber;
-  USHORT       usProgramNumber;
+  USHORT usPIDNumber;
+  USHORT usProgramNumber;
   MUX_PID_TYPE ePIDType;
 } BDA_MUX_PIDLISTITEM, *PBDA_MUX_PIDLISTITEM;
+#pragma pack(pop)
 
-#endif /*(_WIN32_WINNT >= 0x0601)*/
+#pragma pack(push, 1)
+typedef struct _BDA_TS_SELECTORINFO {
+  BYTE bTSInfolength;
+  BYTE bReserved[2];
+  GUID guidNetworkType;
+  BYTE bTSIDCount;
+  USHORT usTSID[MIN_DIMENSION];
+} BDA_TS_SELECTORINFO, *PBDA_TS_SELECTORINFO;
 
-#endif /* _BDATYPES_ */
+typedef struct _BDA_TS_SELECTORINFO_ISDBS_EXT {
+  BYTE bTMCC[48];
+} BDA_TS_SELECTORINFO_ISDBS_EXT, *PBDA_TS_SELECTORINFO_ISDBS_EXT;
+#pragma pack(pop)
 
+typedef struct _BDA_DVBT2_L1_SIGNALLING_DATA {
+  BYTE L1Pre_TYPE;
+  BYTE L1Pre_BWT_S1_S2;
+  BYTE L1Pre_REPETITION_GUARD_PAPR;
+  BYTE L1Pre_MOD_COD_FEC;
+  BYTE L1Pre_POSTSIZE_INFO_PILOT[5];
+  BYTE L1Pre_TX_ID_AVAIL;
+  BYTE L1Pre_CELL_ID[2];
+  BYTE L1Pre_NETWORK_ID[2];
+  BYTE L1Pre_T2SYSTEM_ID[2];
+  BYTE L1Pre_NUM_T2_FRAMES;
+  BYTE L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT[2];
+  BYTE L1Pre_NUMRF_CURRENTRF_RESERVED[2];
+  BYTE L1Pre_CRC32[4];
+  BYTE L1PostData[MIN_DIMENSION];
+} BDA_DVBT2_L1_SIGNALLING_DATA, *PBDA_DVBT2_L1_SIGNALLING_DATA;
+
+typedef struct _BDA_RATING_PINRESET {
+  BYTE bPinLength;
+  BYTE argbNewPin[MIN_DIMENSION];
+} BDA_RATING_PINRESET, *PBDA_RATING_PINRESET;
+
+typedef struct _MPEG2_TRANSPORT_STRIDE {
+  DWORD dwOffset;
+  DWORD dwPacketLength;
+  DWORD dwStride;
+} MPEG2_TRANSPORT_STRIDE, *PMPEG2_TRANSPORT_STRIDE;
+
+typedef struct _BDA_SIGNAL_TIMEOUTS {
+  ULONG ulCarrierTimeoutMs;
+  ULONG ulScanningTimeoutMs;
+  ULONG ulTuningTimeoutMs;
+} BDA_SIGNAL_TIMEOUTS, *PBDA_SIGNAL_TIMEOUTS;
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/codecapi.h b/x86_64-w64-mingw32/include/codecapi.h
index 2583793..a829b62 100644
--- a/x86_64-w64-mingw32/include/codecapi.h
+++ b/x86_64-w64-mingw32/include/codecapi.h
@@ -6,6 +6,30 @@
 #ifndef _INC_CODECAPI
 #define _INC_CODECAPI
 
+#ifdef UUID_GEN
+#  define DEFINE_CODECAPI_GUID(name, guidstr, g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11) \
+    OUR_GUID_ENTRY(CODECAPI_##name, g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11)
+#else
+#  ifndef DEFINE_GUIDSTRUCT
+#    ifdef __cplusplus
+#      define DEFINE_GUIDSTRUCT(g, n) struct n
+#      define DEFINE_GUIDNAMED(n) __uuidof(struct n)
+#    else
+#      define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n)
+#      define DEFINE_GUIDNAMED(n) n
+#    endif
+#  endif
+#  ifdef __CRT_UUID_DECL
+#    define DEFINE_CODECAPI_GUID(name, guidstr, g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11) \
+       struct CODECAPI_##name; \
+       __CRT_UUID_DECL(CODECAPI_##name, g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11)
+#    define DEFINE_CODECAPI_GUIDNAMED(name) __uuidof(CODECAPI_##name)
+#  else
+#    define DEFINE_CODECAPI_GUID(name, guidstr, g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11) DEFINE_GUIDSTRUCT(guidstr, CODECAPI_##name);
+#    define DEFINE_CODECAPI_GUIDNAMED(name) DEFINE_GUIDNAMED(CODECAPI_##name)
+#  endif
+#endif
+
   enum eAVEncH264VLevel {
     eAVEncH264VLevel1     = 10,
     eAVEncH264VLevel1_b   = 11,
@@ -37,4 +61,89 @@
     eAVEncH264VProfile_Extended   = 88 
   };
 
+#define STATIC_CODECAPI_AVDecVideoThumbnailGenerationMode  0x2efd8eee,0x1150,0x4328,0x9c,0xf5,0x66,0xdc,0xe9,0x33,0xfc,0xf4
+DEFINE_CODECAPI_GUID(AVDecVideoThumbnailGenerationMode, "2efd8eee-1150-4328-9cf5-66dce933fcf4", 0x2efd8eee,
+                     0x1150,0x4328,0x9c,0xf5,0x66,0xdc,0xe9,0x33,0xfc,0xf4)
+
+#define STATIC_CODECAPI_AVDecVideoDropPicWithMissingRef  0xf8226383,0x14c2,0x4567,0x97,0x34,0x50,0x04,0xe9,0x6f,0xf8,0x87
+DEFINE_CODECAPI_GUID(AVDecVideoDropPicWithMissingRef, "f8226383-14c2-4567-9734-5004e96ff887",
+                     0xf8226383,0x14c2,0x4567,0x97,0x34,0x50,0x04,0xe9,0x6f,0xf8,0x87)
+
+#define STATIC_CODECAPI_AVDecVideoSoftwareDeinterlaceMode  0x0c08d1ce,0x9ced,0x4540,0xba,0xe3,0xce,0xb3,0x80,0x14,0x11,0x09
+DEFINE_CODECAPI_GUID(AVDecVideoSoftwareDeinterlaceMode, "0c08d1ce-9ced-4540-bae3-ceb380141109",
+                     0x0c08d1ce,0x9ced,0x4540,0xba,0xe3,0xce,0xb3,0x80,0x14,0x11,0x09);
+
+#define STATIC_CODECAPI_AVDecVideoFastDecodeMode  0x6b529f7d,0xd3b1,0x49c6,0xa9,0x99,0x9e,0xc6,0x91,0x1b,0xed,0xbf
+DEFINE_CODECAPI_GUID(AVDecVideoFastDecodeMode, "6b529f7d-d3b1-49c6-a999-9ec6911bedbf",
+                     0x6b529f7d,0xd3b1,0x49c6,0xa9,0x99,0x9e,0xc6,0x91,0x1b,0xed,0xbf);
+
+#define STATIC_CODECAPI_AVLowLatencyMode  0x9c27891a,0xed7a,0x40e1,0x88,0xe8,0xb2,0x27,0x27,0xa0,0x24,0xee
+DEFINE_CODECAPI_GUID(AVLowLatencyMode, "9c27891a-ed7a-40e1-88e8-b22727a024ee",
+                     0x9c27891a,0xed7a,0x40e1,0x88,0xe8,0xb2,0x27,0x27,0xa0,0x24,0xee)
+
+#define STATIC_CODECAPI_AVDecVideoH264ErrorConcealment  0xececace8,0x3436,0x462c,0x92,0x94,0xcd,0x7b,0xac,0xd7,0x58,0xa9
+DEFINE_CODECAPI_GUID(AVDecVideoH264ErrorConcealment, "ececace8-3436-462c-9294-cd7bacd758a9",
+                     0xececace8,0x3436,0x462c,0x92,0x94,0xcd,0x7b,0xac,0xd7,0x58,0xa9)
+
+#define STATIC_CODECAPI_AVDecVideoMPEG2ErrorConcealment  0x9d2bfe18,0x728d,0x48d2,0xb3,0x58,0xbc,0x7e,0x43,0x6c,0x66,0x74
+DEFINE_CODECAPI_GUID(AVDecVideoMPEG2ErrorConcealment, "9d2bfe18-728d-48d2-b358-bc7e436c6674",
+                     0x9d2bfe18,0x728d,0x48d2,0xb3,0x58,0xbc,0x7e,0x43,0x6c,0x66,0x74)
+
+#define STATIC_CODECAPI_AVDecVideoCodecType  0x434528e5,0x21f0,0x46b6,0xb6,0x2c,0x9b,0x1b,0x6b,0x65,0x8c,0xd1
+DEFINE_CODECAPI_GUID(AVDecVideoCodecType, "434528e5-21f0-46b6-b62c-9b1b6b658cd1",
+                     0x434528e5,0x21f0,0x46b6,0xb6,0x2c,0x9b,0x1b,0x6b,0x65,0x8c,0xd1);
+
+#define STATIC_CODECAPI_AVDecVideoDXVAMode  0xf758f09e,0x7337,0x4ae7,0x83,0x87,0x73,0xdc,0x2d,0x54,0xe6,0x7d
+DEFINE_CODECAPI_GUID(AVDecVideoDXVAMode, "f758f09e-7337-4ae7-8387-73dc2d54e67d",
+                     0xf758f09e,0x7337,0x4ae7,0x83,0x87,0x73,0xdc,0x2d,0x54,0xe6,0x7d);
+
+#define STATIC_CODECAPI_AVDecVideoDXVABusEncryption  0x42153c8b,0xfd0b,0x4765,0xa4,0x62,0xdd,0xd9,0xe8,0xbc,0xc3,0x88
+DEFINE_CODECAPI_GUID(AVDecVideoDXVABusEncryption, "42153c8b-fd0b-4765-a462-ddd9e8bcc388",
+                     0x42153c8b,0xfd0b,0x4765,0xa4,0x62,0xdd,0xd9,0xe8,0xbc,0xc3,0x88);
+
+#define STATIC_CODECAPI_AVDecVideoSWPowerLevel  0xfb5d2347,0x4dd8,0x4509,0xae,0xd0,0xdb,0x5f,0xa9,0xaa,0x93,0xf4
+DEFINE_CODECAPI_GUID(AVDecVideoSWPowerLevel,  "fb5d2347-4dd8-4509-aed0-db5fa9aa93f4",
+                     0xfb5d2347,0x4dd8,0x4509,0xae,0xd0,0xdb,0x5f,0xa9,0xaa,0x93,0xf4)
+
+#define STATIC_CODECAPI_AVDecVideoMaxCodedWidth  0x5ae557b8,0x77af,0x41f5,0x9f,0xa6,0x4d,0xb2,0xfe,0x1d,0x4b,0xca
+DEFINE_CODECAPI_GUID(AVDecVideoMaxCodedWidth, "5ae557b8-77af-41f5-9fa6-4db2fe1d4bca",
+                     0x5ae557b8,0x77af,0x41f5,0x9f,0xa6,0x4d,0xb2,0xfe,0x1d,0x4b,0xca)
+
+#define STATIC_CODECAPI_AVDecVideoMaxCodedHeight  0x7262a16a,0xd2dc,0x4e75,0x9b,0xa8,0x65,0xc0,0xc6,0xd3,0x2b,0x13
+DEFINE_CODECAPI_GUID(AVDecVideoMaxCodedHeight, "7262a16a-d2dc-4e75-9ba8-65c0c6d32b13",
+                     0x7262a16a,0xd2dc,0x4e75,0x9b,0xa8,0x65,0xc0,0xc6,0xd3,0x2b,0x13)
+
+#define STATIC_CODECAPI_AVDecNumWorkerThreads  0x9561c3e8,0xea9e,0x4435,0x9b,0x1e,0xa9,0x3e,0x69,0x18,0x94,0xd8
+DEFINE_CODECAPI_GUID(AVDecNumWorkerThreads, "9561c3e8-ea9e-4435-9b1e-a93e691894d8",
+                     0x9561c3e8,0xea9e,0x4435,0x9b,0x1e,0xa9,0x3e,0x69,0x18,0x94,0xd8)
+
+#define STATIC_CODECAPI_AVDecSoftwareDynamicFormatChange  0x862e2f0a,0x507b,0x47ff,0xaf,0x47,0x01,0xe2,0x62,0x42,0x98,0xb7
+DEFINE_CODECAPI_GUID(AVDecSoftwareDynamicFormatChange, "862e2f0a-507b-47ff-af47-01e2624298b7",
+                     0x862e2f0a,0x507b,0x47ff,0xaf,0x47,0x01,0xe2,0x62,0x42,0x98,0xb7)
+
+#define STATIC_CODECAPI_AVDecDisableVideoPostProcessing  0xf8749193,0x667a,0x4f2c,0xa9,0xe8,0x5d,0x4a,0xf9,0x24,0xf0,0x8f
+DEFINE_CODECAPI_GUID(AVDecDisableVideoPostProcessing, "f8749193-667a-4f2c-a9e8-5d4af924f08f",
+                     0xf8749193,0x667a,0x4f2c,0xa9,0xe8,0x5d,0x4a,0xf9,0x24,0xf0,0x8f);
+
+#ifndef UUID_GEN
+
+#define CODECAPI_AVDecVideoThumbnailGenerationMode  DEFINE_CODECAPI_GUIDNAMED(AVDecVideoThumbnailGenerationMode)
+#define CODECAPI_AVDecVideoDropPicWithMissingRef    DEFINE_CODECAPI_GUIDNAMED(AVDecVideoDropPicWithMissingRef)
+#define CODECAPI_AVDecVideoSoftwareDeinterlaceMode  DEFINE_CODECAPI_GUIDNAMED(AVDecVideoSoftwareDeinterlaceMode)
+#define CODECAPI_AVDecVideoFastDecodeMode           DEFINE_CODECAPI_GUIDNAMED(AVDecVideoFastDecodeMode)
+#define CODECAPI_AVLowLatencyMode                   DEFINE_CODECAPI_GUIDNAMED(AVLowLatencyMode)
+#define CODECAPI_AVDecVideoH264ErrorConcealment     DEFINE_CODECAPI_GUIDNAMED(AVDecVideoH264ErrorConcealment)
+#define CODECAPI_AVDecVideoMPEG2ErrorConcealment    DEFINE_CODECAPI_GUIDNAMED(AVDecVideoMPEG2ErrorConcealment)
+#define CODECAPI_AVDecVideoCodecType                DEFINE_CODECAPI_GUIDNAMED(AVDecVideoCodecType)
+#define CODECAPI_AVDecVideoDXVAMode                 DEFINE_CODECAPI_GUIDNAMED(AVDecVideoDXVAMode)
+#define CODECAPI_AVDecVideoDXVABusEncryption        DEFINE_CODECAPI_GUIDNAMED(AVDecVideoDXVABusEncryption)
+#define CODECAPI_AVDecVideoSWPowerLevel             DEFINE_CODECAPI_GUIDNAMED(AVDecVideoSWPowerLevel)
+#define CODECAPI_AVDecVideoMaxCodedWidth            DEFINE_CODECAPI_GUIDNAMED(AVDecVideoMaxCodedWidth)
+#define CODECAPI_AVDecVideoMaxCodedHeight           DEFINE_CODECAPI_GUIDNAMED(AVDecVideoMaxCodedHeight)
+#define CODECAPI_AVDecNumWorkerThreads              DEFINE_CODECAPI_GUIDNAMED(AVDecNumWorkerThreads)
+#define CODECAPI_AVDecSoftwareDynamicFormatChange   DEFINE_CODECAPI_GUIDNAMED(AVDecSoftwareDynamicFormatChange)
+#define CODECAPI_AVDecDisableVideoPostProcessing    DEFINE_CODECAPI_GUIDNAMED(AVDecDisableVideoPostProcessing)
+
+#endif
+
 #endif /*_INC_CODECAPI*/
diff --git a/x86_64-w64-mingw32/include/ctfutb.h b/x86_64-w64-mingw32/include/ctfutb.h
index 8cbf07a..58a995d 100644
--- a/x86_64-w64-mingw32/include/ctfutb.h
+++ b/x86_64-w64-mingw32/include/ctfutb.h
@@ -17,11 +17,36 @@
 
 /* Forward declarations */
 
+#ifndef __ITfLangBarItem_FWD_DEFINED__
+#define __ITfLangBarItem_FWD_DEFINED__
+typedef interface ITfLangBarItem ITfLangBarItem;
+#endif
+
+#ifndef __IEnumTfLangBarItems_FWD_DEFINED__
+#define __IEnumTfLangBarItems_FWD_DEFINED__
+typedef interface IEnumTfLangBarItems IEnumTfLangBarItems;
+#endif
+
+#ifndef __ITfLangBarItemSink_FWD_DEFINED__
+#define __ITfLangBarItemSink_FWD_DEFINED__
+typedef interface ITfLangBarItemSink ITfLangBarItemSink;
+#endif
+
+#ifndef __ITfLangBarItemMgr_FWD_DEFINED__
+#define __ITfLangBarItemMgr_FWD_DEFINED__
+typedef interface ITfLangBarItemMgr ITfLangBarItemMgr;
+#endif
+
 #ifndef __ITfLangBarMgr_FWD_DEFINED__
 #define __ITfLangBarMgr_FWD_DEFINED__
 typedef interface ITfLangBarMgr ITfLangBarMgr;
 #endif
 
+#ifndef __ITfLangBarEventSink_FWD_DEFINED__
+#define __ITfLangBarEventSink_FWD_DEFINED__
+typedef interface ITfLangBarEventSink ITfLangBarEventSink;
+#endif
+
 /* Headers for imported files */
 
 #include <oaidl.h>
@@ -45,6 +70,723 @@
 typedef interface ITfInputProcessorProfiles ITfInputProcessorProfiles;
 #endif
 
+#define TF_LBI_DESC_MAXLEN (32)
+
+typedef struct TF_LANGBARITEMINFO {
+    CLSID clsidService;
+    GUID guidItem;
+    DWORD dwStyle;
+    ULONG ulSort;
+    WCHAR szDescription[32];
+} TF_LANGBARITEMINFO;
+/*****************************************************************************
+ * ITfLangBarItem interface
+ */
+#ifndef __ITfLangBarItem_INTERFACE_DEFINED__
+#define __ITfLangBarItem_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfLangBarItem, 0x73540d69, 0xedeb, 0x4ee9, 0x96,0xc9, 0x23,0xaa,0x30,0xb2,0x59,0x16);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("73540d69-edeb-4ee9-96c9-23aa30b25916")
+ITfLangBarItem : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetInfo(
+        TF_LANGBARITEMINFO *pInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStatus(
+        DWORD *pdwStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Show(
+        WINBOOL fShow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTooltipString(
+        BSTR *pbstrToolTip) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfLangBarItem, 0x73540d69, 0xedeb, 0x4ee9, 0x96,0xc9, 0x23,0xaa,0x30,0xb2,0x59,0x16)
+#endif
+#else
+typedef struct ITfLangBarItemVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfLangBarItem* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfLangBarItem* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfLangBarItem* This);
+
+    /*** ITfLangBarItem methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetInfo)(
+        ITfLangBarItem* This,
+        TF_LANGBARITEMINFO *pInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatus)(
+        ITfLangBarItem* This,
+        DWORD *pdwStatus);
+
+    HRESULT (STDMETHODCALLTYPE *Show)(
+        ITfLangBarItem* This,
+        WINBOOL fShow);
+
+    HRESULT (STDMETHODCALLTYPE *GetTooltipString)(
+        ITfLangBarItem* This,
+        BSTR *pbstrToolTip);
+
+    END_INTERFACE
+} ITfLangBarItemVtbl;
+interface ITfLangBarItem {
+    CONST_VTBL ITfLangBarItemVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfLangBarItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfLangBarItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfLangBarItem_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfLangBarItem methods ***/
+#define ITfLangBarItem_GetInfo(This,pInfo) (This)->lpVtbl->GetInfo(This,pInfo)
+#define ITfLangBarItem_GetStatus(This,pdwStatus) (This)->lpVtbl->GetStatus(This,pdwStatus)
+#define ITfLangBarItem_Show(This,fShow) (This)->lpVtbl->Show(This,fShow)
+#define ITfLangBarItem_GetTooltipString(This,pbstrToolTip) (This)->lpVtbl->GetTooltipString(This,pbstrToolTip)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfLangBarItem_QueryInterface(ITfLangBarItem* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfLangBarItem_AddRef(ITfLangBarItem* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfLangBarItem_Release(ITfLangBarItem* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfLangBarItem methods ***/
+static FORCEINLINE HRESULT ITfLangBarItem_GetInfo(ITfLangBarItem* This,TF_LANGBARITEMINFO *pInfo) {
+    return This->lpVtbl->GetInfo(This,pInfo);
+}
+static FORCEINLINE HRESULT ITfLangBarItem_GetStatus(ITfLangBarItem* This,DWORD *pdwStatus) {
+    return This->lpVtbl->GetStatus(This,pdwStatus);
+}
+static FORCEINLINE HRESULT ITfLangBarItem_Show(ITfLangBarItem* This,WINBOOL fShow) {
+    return This->lpVtbl->Show(This,fShow);
+}
+static FORCEINLINE HRESULT ITfLangBarItem_GetTooltipString(ITfLangBarItem* This,BSTR *pbstrToolTip) {
+    return This->lpVtbl->GetTooltipString(This,pbstrToolTip);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfLangBarItem_GetInfo_Proxy(
+    ITfLangBarItem* This,
+    TF_LANGBARITEMINFO *pInfo);
+void __RPC_STUB ITfLangBarItem_GetInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItem_GetStatus_Proxy(
+    ITfLangBarItem* This,
+    DWORD *pdwStatus);
+void __RPC_STUB ITfLangBarItem_GetStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItem_Show_Proxy(
+    ITfLangBarItem* This,
+    WINBOOL fShow);
+void __RPC_STUB ITfLangBarItem_Show_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItem_GetTooltipString_Proxy(
+    ITfLangBarItem* This,
+    BSTR *pbstrToolTip);
+void __RPC_STUB ITfLangBarItem_GetTooltipString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfLangBarItem_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTfLangBarItems interface
+ */
+#ifndef __IEnumTfLangBarItems_INTERFACE_DEFINED__
+#define __IEnumTfLangBarItems_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfLangBarItems, 0x583f34d0, 0xde25, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("583f34d0-de25-11d2-afdd-00105a2799b5")
+IEnumTfLangBarItems : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfLangBarItems **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG ulCount,
+        ITfLangBarItem **ppItem,
+        ULONG *pcFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG ulCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfLangBarItems, 0x583f34d0, 0xde25, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct IEnumTfLangBarItemsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfLangBarItems* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfLangBarItems* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfLangBarItems* This);
+
+    /*** IEnumTfLangBarItems methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfLangBarItems* This,
+        IEnumTfLangBarItems **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfLangBarItems* This,
+        ULONG ulCount,
+        ITfLangBarItem **ppItem,
+        ULONG *pcFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfLangBarItems* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfLangBarItems* This,
+        ULONG ulCount);
+
+    END_INTERFACE
+} IEnumTfLangBarItemsVtbl;
+interface IEnumTfLangBarItems {
+    CONST_VTBL IEnumTfLangBarItemsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfLangBarItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfLangBarItems_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfLangBarItems_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfLangBarItems methods ***/
+#define IEnumTfLangBarItems_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#define IEnumTfLangBarItems_Next(This,ulCount,ppItem,pcFetched) (This)->lpVtbl->Next(This,ulCount,ppItem,pcFetched)
+#define IEnumTfLangBarItems_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfLangBarItems_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfLangBarItems_QueryInterface(IEnumTfLangBarItems* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfLangBarItems_AddRef(IEnumTfLangBarItems* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfLangBarItems_Release(IEnumTfLangBarItems* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfLangBarItems methods ***/
+static FORCEINLINE HRESULT IEnumTfLangBarItems_Clone(IEnumTfLangBarItems* This,IEnumTfLangBarItems **ppEnum) {
+    return This->lpVtbl->Clone(This,ppEnum);
+}
+static FORCEINLINE HRESULT IEnumTfLangBarItems_Next(IEnumTfLangBarItems* This,ULONG ulCount,ITfLangBarItem **ppItem,ULONG *pcFetched) {
+    return This->lpVtbl->Next(This,ulCount,ppItem,pcFetched);
+}
+static FORCEINLINE HRESULT IEnumTfLangBarItems_Reset(IEnumTfLangBarItems* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfLangBarItems_Skip(IEnumTfLangBarItems* This,ULONG ulCount) {
+    return This->lpVtbl->Skip(This,ulCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfLangBarItems_Clone_Proxy(
+    IEnumTfLangBarItems* This,
+    IEnumTfLangBarItems **ppEnum);
+void __RPC_STUB IEnumTfLangBarItems_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfLangBarItems_Next_Proxy(
+    IEnumTfLangBarItems* This,
+    ULONG ulCount,
+    ITfLangBarItem **ppItem,
+    ULONG *pcFetched);
+void __RPC_STUB IEnumTfLangBarItems_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfLangBarItems_Reset_Proxy(
+    IEnumTfLangBarItems* This);
+void __RPC_STUB IEnumTfLangBarItems_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfLangBarItems_Skip_Proxy(
+    IEnumTfLangBarItems* This,
+    ULONG ulCount);
+void __RPC_STUB IEnumTfLangBarItems_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfLangBarItems_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITfLangBarItemSink interface
+ */
+#ifndef __ITfLangBarItemSink_INTERFACE_DEFINED__
+#define __ITfLangBarItemSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfLangBarItemSink, 0x57dbe1a0, 0xde25, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("57dbe1a0-de25-11d2-afdd-00105a2799b5")
+ITfLangBarItemSink : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnUpdate(
+        DWORD dwFlags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfLangBarItemSink, 0x57dbe1a0, 0xde25, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct ITfLangBarItemSinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfLangBarItemSink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfLangBarItemSink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfLangBarItemSink* This);
+
+    /*** ITfLangBarItemSink methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnUpdate)(
+        ITfLangBarItemSink* This,
+        DWORD dwFlags);
+
+    END_INTERFACE
+} ITfLangBarItemSinkVtbl;
+interface ITfLangBarItemSink {
+    CONST_VTBL ITfLangBarItemSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfLangBarItemSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfLangBarItemSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfLangBarItemSink_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfLangBarItemSink methods ***/
+#define ITfLangBarItemSink_OnUpdate(This,dwFlags) (This)->lpVtbl->OnUpdate(This,dwFlags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfLangBarItemSink_QueryInterface(ITfLangBarItemSink* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfLangBarItemSink_AddRef(ITfLangBarItemSink* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfLangBarItemSink_Release(ITfLangBarItemSink* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfLangBarItemSink methods ***/
+static FORCEINLINE HRESULT ITfLangBarItemSink_OnUpdate(ITfLangBarItemSink* This,DWORD dwFlags) {
+    return This->lpVtbl->OnUpdate(This,dwFlags);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfLangBarItemSink_OnUpdate_Proxy(
+    ITfLangBarItemSink* This,
+    DWORD dwFlags);
+void __RPC_STUB ITfLangBarItemSink_OnUpdate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfLangBarItemSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITfLangBarItemMgr interface
+ */
+#ifndef __ITfLangBarItemMgr_INTERFACE_DEFINED__
+#define __ITfLangBarItemMgr_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfLangBarItemMgr, 0xba468c55, 0x9956, 0x4fb1, 0xa5,0x9d, 0x52,0xa7,0xdd,0x7c,0xc6,0xaa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ba468c55-9956-4fb1-a59d-52a7dd7cc6aa")
+ITfLangBarItemMgr : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE EnumItems(
+        IEnumTfLangBarItems **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItem(
+        REFGUID rguid,
+        ITfLangBarItem **ppItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddItem(
+        ITfLangBarItem *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveItem(
+        ITfLangBarItem *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AdviseItemSink(
+        ITfLangBarItemSink *punk,
+        DWORD *pdwCookie,
+        REFGUID rguidItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnadviseItemSink(
+        DWORD dwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItemFloatingRect(
+        DWORD dwThreadId,
+        REFGUID rguid,
+        RECT *prc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItemsStatus(
+        ULONG ulCount,
+        const GUID *prgguid,
+        DWORD *pdwStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItemNum(
+        ULONG *pulCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItems(
+        ULONG ulCount,
+        ITfLangBarItem **ppItem,
+        TF_LANGBARITEMINFO *pInfo,
+        DWORD *pdwStatus,
+        ULONG *pcFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AdviseItemsSink(
+        ULONG ulCount,
+        ITfLangBarItemSink **ppunk,
+        const GUID *pguidItem,
+        DWORD *pdwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnadviseItemsSink(
+        ULONG ulCount,
+        DWORD *pdwCookie) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfLangBarItemMgr, 0xba468c55, 0x9956, 0x4fb1, 0xa5,0x9d, 0x52,0xa7,0xdd,0x7c,0xc6,0xaa)
+#endif
+#else
+typedef struct ITfLangBarItemMgrVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfLangBarItemMgr* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfLangBarItemMgr* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfLangBarItemMgr* This);
+
+    /*** ITfLangBarItemMgr methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumItems)(
+        ITfLangBarItemMgr* This,
+        IEnumTfLangBarItems **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *GetItem)(
+        ITfLangBarItemMgr* This,
+        REFGUID rguid,
+        ITfLangBarItem **ppItem);
+
+    HRESULT (STDMETHODCALLTYPE *AddItem)(
+        ITfLangBarItemMgr* This,
+        ITfLangBarItem *punk);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveItem)(
+        ITfLangBarItemMgr* This,
+        ITfLangBarItem *punk);
+
+    HRESULT (STDMETHODCALLTYPE *AdviseItemSink)(
+        ITfLangBarItemMgr* This,
+        ITfLangBarItemSink *punk,
+        DWORD *pdwCookie,
+        REFGUID rguidItem);
+
+    HRESULT (STDMETHODCALLTYPE *UnadviseItemSink)(
+        ITfLangBarItemMgr* This,
+        DWORD dwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *GetItemFloatingRect)(
+        ITfLangBarItemMgr* This,
+        DWORD dwThreadId,
+        REFGUID rguid,
+        RECT *prc);
+
+    HRESULT (STDMETHODCALLTYPE *GetItemsStatus)(
+        ITfLangBarItemMgr* This,
+        ULONG ulCount,
+        const GUID *prgguid,
+        DWORD *pdwStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetItemNum)(
+        ITfLangBarItemMgr* This,
+        ULONG *pulCount);
+
+    HRESULT (STDMETHODCALLTYPE *GetItems)(
+        ITfLangBarItemMgr* This,
+        ULONG ulCount,
+        ITfLangBarItem **ppItem,
+        TF_LANGBARITEMINFO *pInfo,
+        DWORD *pdwStatus,
+        ULONG *pcFetched);
+
+    HRESULT (STDMETHODCALLTYPE *AdviseItemsSink)(
+        ITfLangBarItemMgr* This,
+        ULONG ulCount,
+        ITfLangBarItemSink **ppunk,
+        const GUID *pguidItem,
+        DWORD *pdwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *UnadviseItemsSink)(
+        ITfLangBarItemMgr* This,
+        ULONG ulCount,
+        DWORD *pdwCookie);
+
+    END_INTERFACE
+} ITfLangBarItemMgrVtbl;
+interface ITfLangBarItemMgr {
+    CONST_VTBL ITfLangBarItemMgrVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfLangBarItemMgr_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfLangBarItemMgr_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfLangBarItemMgr_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfLangBarItemMgr methods ***/
+#define ITfLangBarItemMgr_EnumItems(This,ppEnum) (This)->lpVtbl->EnumItems(This,ppEnum)
+#define ITfLangBarItemMgr_GetItem(This,rguid,ppItem) (This)->lpVtbl->GetItem(This,rguid,ppItem)
+#define ITfLangBarItemMgr_AddItem(This,punk) (This)->lpVtbl->AddItem(This,punk)
+#define ITfLangBarItemMgr_RemoveItem(This,punk) (This)->lpVtbl->RemoveItem(This,punk)
+#define ITfLangBarItemMgr_AdviseItemSink(This,punk,pdwCookie,rguidItem) (This)->lpVtbl->AdviseItemSink(This,punk,pdwCookie,rguidItem)
+#define ITfLangBarItemMgr_UnadviseItemSink(This,dwCookie) (This)->lpVtbl->UnadviseItemSink(This,dwCookie)
+#define ITfLangBarItemMgr_GetItemFloatingRect(This,dwThreadId,rguid,prc) (This)->lpVtbl->GetItemFloatingRect(This,dwThreadId,rguid,prc)
+#define ITfLangBarItemMgr_GetItemsStatus(This,ulCount,prgguid,pdwStatus) (This)->lpVtbl->GetItemsStatus(This,ulCount,prgguid,pdwStatus)
+#define ITfLangBarItemMgr_GetItemNum(This,pulCount) (This)->lpVtbl->GetItemNum(This,pulCount)
+#define ITfLangBarItemMgr_GetItems(This,ulCount,ppItem,pInfo,pdwStatus,pcFetched) (This)->lpVtbl->GetItems(This,ulCount,ppItem,pInfo,pdwStatus,pcFetched)
+#define ITfLangBarItemMgr_AdviseItemsSink(This,ulCount,ppunk,pguidItem,pdwCookie) (This)->lpVtbl->AdviseItemsSink(This,ulCount,ppunk,pguidItem,pdwCookie)
+#define ITfLangBarItemMgr_UnadviseItemsSink(This,ulCount,pdwCookie) (This)->lpVtbl->UnadviseItemsSink(This,ulCount,pdwCookie)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfLangBarItemMgr_QueryInterface(ITfLangBarItemMgr* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfLangBarItemMgr_AddRef(ITfLangBarItemMgr* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfLangBarItemMgr_Release(ITfLangBarItemMgr* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfLangBarItemMgr methods ***/
+static FORCEINLINE HRESULT ITfLangBarItemMgr_EnumItems(ITfLangBarItemMgr* This,IEnumTfLangBarItems **ppEnum) {
+    return This->lpVtbl->EnumItems(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_GetItem(ITfLangBarItemMgr* This,REFGUID rguid,ITfLangBarItem **ppItem) {
+    return This->lpVtbl->GetItem(This,rguid,ppItem);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_AddItem(ITfLangBarItemMgr* This,ITfLangBarItem *punk) {
+    return This->lpVtbl->AddItem(This,punk);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_RemoveItem(ITfLangBarItemMgr* This,ITfLangBarItem *punk) {
+    return This->lpVtbl->RemoveItem(This,punk);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_AdviseItemSink(ITfLangBarItemMgr* This,ITfLangBarItemSink *punk,DWORD *pdwCookie,REFGUID rguidItem) {
+    return This->lpVtbl->AdviseItemSink(This,punk,pdwCookie,rguidItem);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_UnadviseItemSink(ITfLangBarItemMgr* This,DWORD dwCookie) {
+    return This->lpVtbl->UnadviseItemSink(This,dwCookie);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_GetItemFloatingRect(ITfLangBarItemMgr* This,DWORD dwThreadId,REFGUID rguid,RECT *prc) {
+    return This->lpVtbl->GetItemFloatingRect(This,dwThreadId,rguid,prc);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_GetItemsStatus(ITfLangBarItemMgr* This,ULONG ulCount,const GUID *prgguid,DWORD *pdwStatus) {
+    return This->lpVtbl->GetItemsStatus(This,ulCount,prgguid,pdwStatus);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_GetItemNum(ITfLangBarItemMgr* This,ULONG *pulCount) {
+    return This->lpVtbl->GetItemNum(This,pulCount);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_GetItems(ITfLangBarItemMgr* This,ULONG ulCount,ITfLangBarItem **ppItem,TF_LANGBARITEMINFO *pInfo,DWORD *pdwStatus,ULONG *pcFetched) {
+    return This->lpVtbl->GetItems(This,ulCount,ppItem,pInfo,pdwStatus,pcFetched);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_AdviseItemsSink(ITfLangBarItemMgr* This,ULONG ulCount,ITfLangBarItemSink **ppunk,const GUID *pguidItem,DWORD *pdwCookie) {
+    return This->lpVtbl->AdviseItemsSink(This,ulCount,ppunk,pguidItem,pdwCookie);
+}
+static FORCEINLINE HRESULT ITfLangBarItemMgr_UnadviseItemsSink(ITfLangBarItemMgr* This,ULONG ulCount,DWORD *pdwCookie) {
+    return This->lpVtbl->UnadviseItemsSink(This,ulCount,pdwCookie);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_EnumItems_Proxy(
+    ITfLangBarItemMgr* This,
+    IEnumTfLangBarItems **ppEnum);
+void __RPC_STUB ITfLangBarItemMgr_EnumItems_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_GetItem_Proxy(
+    ITfLangBarItemMgr* This,
+    REFGUID rguid,
+    ITfLangBarItem **ppItem);
+void __RPC_STUB ITfLangBarItemMgr_GetItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_AddItem_Proxy(
+    ITfLangBarItemMgr* This,
+    ITfLangBarItem *punk);
+void __RPC_STUB ITfLangBarItemMgr_AddItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_RemoveItem_Proxy(
+    ITfLangBarItemMgr* This,
+    ITfLangBarItem *punk);
+void __RPC_STUB ITfLangBarItemMgr_RemoveItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_AdviseItemSink_Proxy(
+    ITfLangBarItemMgr* This,
+    ITfLangBarItemSink *punk,
+    DWORD *pdwCookie,
+    REFGUID rguidItem);
+void __RPC_STUB ITfLangBarItemMgr_AdviseItemSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_UnadviseItemSink_Proxy(
+    ITfLangBarItemMgr* This,
+    DWORD dwCookie);
+void __RPC_STUB ITfLangBarItemMgr_UnadviseItemSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_GetItemFloatingRect_Proxy(
+    ITfLangBarItemMgr* This,
+    DWORD dwThreadId,
+    REFGUID rguid,
+    RECT *prc);
+void __RPC_STUB ITfLangBarItemMgr_GetItemFloatingRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_GetItemsStatus_Proxy(
+    ITfLangBarItemMgr* This,
+    ULONG ulCount,
+    const GUID *prgguid,
+    DWORD *pdwStatus);
+void __RPC_STUB ITfLangBarItemMgr_GetItemsStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_GetItemNum_Proxy(
+    ITfLangBarItemMgr* This,
+    ULONG *pulCount);
+void __RPC_STUB ITfLangBarItemMgr_GetItemNum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_GetItems_Proxy(
+    ITfLangBarItemMgr* This,
+    ULONG ulCount,
+    ITfLangBarItem **ppItem,
+    TF_LANGBARITEMINFO *pInfo,
+    DWORD *pdwStatus,
+    ULONG *pcFetched);
+void __RPC_STUB ITfLangBarItemMgr_GetItems_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_AdviseItemsSink_Proxy(
+    ITfLangBarItemMgr* This,
+    ULONG ulCount,
+    ITfLangBarItemSink **ppunk,
+    const GUID *pguidItem,
+    DWORD *pdwCookie);
+void __RPC_STUB ITfLangBarItemMgr_AdviseItemsSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarItemMgr_UnadviseItemsSink_Proxy(
+    ITfLangBarItemMgr* This,
+    ULONG ulCount,
+    DWORD *pdwCookie);
+void __RPC_STUB ITfLangBarItemMgr_UnadviseItemsSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfLangBarItemMgr_INTERFACE_DEFINED__ */
+
 /*****************************************************************************
  * ITfLangBarMgr interface
  */
@@ -320,8 +1062,206 @@
 
 #endif  /* __ITfLangBarMgr_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * ITfLangBarEventSink interface
+ */
+#ifndef __ITfLangBarEventSink_INTERFACE_DEFINED__
+#define __ITfLangBarEventSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfLangBarEventSink, 0x18a4e900, 0xe0ae, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("18a4e900-e0ae-11d2-afdd-00105a2799b5")
+ITfLangBarEventSink : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnSetFocus(
+        DWORD dwThreadId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnThreadTerminate(
+        DWORD dwThreadId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnThreadItemChange(
+        DWORD dwThreadId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnModalInput(
+        DWORD dwThreadId,
+        UINT uMsg,
+        WPARAM wParam,
+        LPARAM lParam) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowFloating(
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItemFloatingRect(
+        DWORD dwThreadId,
+        REFGUID rguid,
+        RECT *prc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfLangBarEventSink, 0x18a4e900, 0xe0ae, 0x11d2, 0xaf,0xdd, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct ITfLangBarEventSinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfLangBarEventSink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfLangBarEventSink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfLangBarEventSink* This);
+
+    /*** ITfLangBarEventSink methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnSetFocus)(
+        ITfLangBarEventSink* This,
+        DWORD dwThreadId);
+
+    HRESULT (STDMETHODCALLTYPE *OnThreadTerminate)(
+        ITfLangBarEventSink* This,
+        DWORD dwThreadId);
+
+    HRESULT (STDMETHODCALLTYPE *OnThreadItemChange)(
+        ITfLangBarEventSink* This,
+        DWORD dwThreadId);
+
+    HRESULT (STDMETHODCALLTYPE *OnModalInput)(
+        ITfLangBarEventSink* This,
+        DWORD dwThreadId,
+        UINT uMsg,
+        WPARAM wParam,
+        LPARAM lParam);
+
+    HRESULT (STDMETHODCALLTYPE *ShowFloating)(
+        ITfLangBarEventSink* This,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetItemFloatingRect)(
+        ITfLangBarEventSink* This,
+        DWORD dwThreadId,
+        REFGUID rguid,
+        RECT *prc);
+
+    END_INTERFACE
+} ITfLangBarEventSinkVtbl;
+interface ITfLangBarEventSink {
+    CONST_VTBL ITfLangBarEventSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfLangBarEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfLangBarEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfLangBarEventSink_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfLangBarEventSink methods ***/
+#define ITfLangBarEventSink_OnSetFocus(This,dwThreadId) (This)->lpVtbl->OnSetFocus(This,dwThreadId)
+#define ITfLangBarEventSink_OnThreadTerminate(This,dwThreadId) (This)->lpVtbl->OnThreadTerminate(This,dwThreadId)
+#define ITfLangBarEventSink_OnThreadItemChange(This,dwThreadId) (This)->lpVtbl->OnThreadItemChange(This,dwThreadId)
+#define ITfLangBarEventSink_OnModalInput(This,dwThreadId,uMsg,wParam,lParam) (This)->lpVtbl->OnModalInput(This,dwThreadId,uMsg,wParam,lParam)
+#define ITfLangBarEventSink_ShowFloating(This,dwFlags) (This)->lpVtbl->ShowFloating(This,dwFlags)
+#define ITfLangBarEventSink_GetItemFloatingRect(This,dwThreadId,rguid,prc) (This)->lpVtbl->GetItemFloatingRect(This,dwThreadId,rguid,prc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfLangBarEventSink_QueryInterface(ITfLangBarEventSink* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfLangBarEventSink_AddRef(ITfLangBarEventSink* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfLangBarEventSink_Release(ITfLangBarEventSink* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfLangBarEventSink methods ***/
+static FORCEINLINE HRESULT ITfLangBarEventSink_OnSetFocus(ITfLangBarEventSink* This,DWORD dwThreadId) {
+    return This->lpVtbl->OnSetFocus(This,dwThreadId);
+}
+static FORCEINLINE HRESULT ITfLangBarEventSink_OnThreadTerminate(ITfLangBarEventSink* This,DWORD dwThreadId) {
+    return This->lpVtbl->OnThreadTerminate(This,dwThreadId);
+}
+static FORCEINLINE HRESULT ITfLangBarEventSink_OnThreadItemChange(ITfLangBarEventSink* This,DWORD dwThreadId) {
+    return This->lpVtbl->OnThreadItemChange(This,dwThreadId);
+}
+static FORCEINLINE HRESULT ITfLangBarEventSink_OnModalInput(ITfLangBarEventSink* This,DWORD dwThreadId,UINT uMsg,WPARAM wParam,LPARAM lParam) {
+    return This->lpVtbl->OnModalInput(This,dwThreadId,uMsg,wParam,lParam);
+}
+static FORCEINLINE HRESULT ITfLangBarEventSink_ShowFloating(ITfLangBarEventSink* This,DWORD dwFlags) {
+    return This->lpVtbl->ShowFloating(This,dwFlags);
+}
+static FORCEINLINE HRESULT ITfLangBarEventSink_GetItemFloatingRect(ITfLangBarEventSink* This,DWORD dwThreadId,REFGUID rguid,RECT *prc) {
+    return This->lpVtbl->GetItemFloatingRect(This,dwThreadId,rguid,prc);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_OnSetFocus_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwThreadId);
+void __RPC_STUB ITfLangBarEventSink_OnSetFocus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_OnThreadTerminate_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwThreadId);
+void __RPC_STUB ITfLangBarEventSink_OnThreadTerminate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_OnThreadItemChange_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwThreadId);
+void __RPC_STUB ITfLangBarEventSink_OnThreadItemChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_OnModalInput_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwThreadId,
+    UINT uMsg,
+    WPARAM wParam,
+    LPARAM lParam);
+void __RPC_STUB ITfLangBarEventSink_OnModalInput_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_ShowFloating_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwFlags);
+void __RPC_STUB ITfLangBarEventSink_ShowFloating_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfLangBarEventSink_GetItemFloatingRect_Proxy(
+    ITfLangBarEventSink* This,
+    DWORD dwThreadId,
+    REFGUID rguid,
+    RECT *prc);
+void __RPC_STUB ITfLangBarEventSink_GetItemFloatingRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfLangBarEventSink_INTERFACE_DEFINED__ */
+
 /* Begin additional prototypes for all interfaces */
 
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
 ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
 unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
 unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
diff --git a/x86_64-w64-mingw32/include/d2d1.h b/x86_64-w64-mingw32/include/d2d1.h
index a86bcee..bc45785 100644
--- a/x86_64-w64-mingw32/include/d2d1.h
+++ b/x86_64-w64-mingw32/include/d2d1.h
@@ -1035,9 +1035,9 @@
 #define ID2D1RenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->CreateBitmap(this,A,B,C,D,E)
 #define ID2D1RenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->CreateBitmapBrush(this,A,B)
 #define ID2D1RenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->CreateBitmapFromWicBitmap(this,A,B,C)
-#define ID2D1RenderTarget_CreateCompatibleRenderTarget(this,A) (this)->lpVtbl->CreateCompatibleRenderTarget(this,A)
+#define ID2D1RenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->CreateCompatibleRenderTarget(this,A,B,C,D,E)
 #define ID2D1RenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->CreateGradientStopCollection(this,A,B,C)
-#define ID2D1RenderTarget_CreateLayer(this,A) (this)->lpVtbl->CreateLayer(this,A)
+#define ID2D1RenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->CreateLayer(this,A,B)
 #define ID2D1RenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->CreateLinearGradientBrush(this,A,B,C,D)
 #define ID2D1RenderTarget_CreateMesh(this,A) (this)->lpVtbl->CreateMesh(this,A)
 #define ID2D1RenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->CreateRadialGradientBrush(this,A,B,C,D)
@@ -1327,9 +1327,9 @@
 #define ID2D1BitmapRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1BitmapRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1BitmapRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1BitmapRenderTarget_CreateCompatibleBitmapRenderTarget(this,A) (this)->lpVtbl->Base.CreateCompatibleBitmapRenderTarget((ID2D1RenderTarget*)(this),A)
+#define ID2D1BitmapRenderTarget_CreateCompatibleBitmapRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleBitmapRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1BitmapRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1BitmapRenderTarget_CreateLayer(this,A) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A)
+#define ID2D1BitmapRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1BitmapRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
 #define ID2D1BitmapRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A)
 #define ID2D1BitmapRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
@@ -1409,9 +1409,9 @@
 #define ID2D1DCRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1DCRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1DCRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1DCRenderTarget_CreateCompatibleRenderTarget(this,A) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A)
+#define ID2D1DCRenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1DCRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1DCRenderTarget_CreateLayer(this,A) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A)
+#define ID2D1DCRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1DCRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
 #define ID2D1DCRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A)
 #define ID2D1DCRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
@@ -1903,9 +1903,9 @@
 #define ID2D1HwndRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1HwndRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1HwndRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1HwndRenderTarget_CreateCompatibleRenderTarget(this,A) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A)
+#define ID2D1HwndRenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E)
 #define ID2D1HwndRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C)
-#define ID2D1HwndRenderTarget_CreateLayer(this,A) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A)
+#define ID2D1HwndRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B)
 #define ID2D1HwndRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
 #define ID2D1HwndRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A)
 #define ID2D1HwndRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D)
diff --git a/x86_64-w64-mingw32/include/d2d1_1.h b/x86_64-w64-mingw32/include/d2d1_1.h
index 36a9864..2eb398a 100644
--- a/x86_64-w64-mingw32/include/d2d1_1.h
+++ b/x86_64-w64-mingw32/include/d2d1_1.h
@@ -150,6 +150,8 @@
 typedef enum D2D1_PRIMITIVE_BLEND {
     D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0,
     D2D1_PRIMITIVE_BLEND_COPY        = 1,
+    D2D1_PRIMITIVE_BLEND_MIN         = 2,
+    D2D1_PRIMITIVE_BLEND_ADD         = 3,
     D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0xffffffff
 } D2D1_PRIMITIVE_BLEND;
 
diff --git a/x86_64-w64-mingw32/include/d2d1_1helper.h b/x86_64-w64-mingw32/include/d2d1_1helper.h
index 9523203..54c6539 100644
--- a/x86_64-w64-mingw32/include/d2d1_1helper.h
+++ b/x86_64-w64-mingw32/include/d2d1_1helper.h
@@ -10,11 +10,15 @@
 #ifndef D2D_USE_C_DEFINITIONS
 
 namespace D2D1 {
+    template<> struct TypeTraits<INT32> {
+        typedef D2D1_POINT_2L Point;
+        typedef D2D1_RECT_L Rect;
+    };
 
-    D2D1FORCEINLINE D2D1_VECTOR_2F Vector2F(FLOAT x = 0.0f, FLOAT y = 0.0f) {
-        D2D1_VECTOR_2F r = {x, y};
-        return r;
-    }
+    template<> struct TypeTraits<LONG> {
+        typedef D2D1_POINT_2L Point;
+        typedef D2D1_RECT_L Rect;
+    };
 
     D2D1FORCEINLINE D2D1_LAYER_PARAMETERS1 LayerParameters1(CONST D2D1_RECT_F &contentBounds = D2D1::InfiniteRect(),
             ID2D1Geometry *geometricMask = NULL, D2D1_ANTIALIAS_MODE maskAntialiasMode = D2D1_ANTIALIAS_MODE_PER_PRIMITIVE,
@@ -63,6 +67,11 @@
         }
     };
 
+    D2D1FORCEINLINE D2D1_VECTOR_2F Vector2F(FLOAT x = 0.0f, FLOAT y = 0.0f) {
+        D2D1_VECTOR_2F r = {x, y};
+        return r;
+    }
+
     D2D1FORCEINLINE D2D1_VECTOR_3F Vector3F(FLOAT x = 0.0f, FLOAT y = 0.0f, FLOAT z = 0.0f) {
         D2D1_VECTOR_3F r = {x, y, z};
         return r;
@@ -72,6 +81,14 @@
         D2D1_VECTOR_4F r = {x, y, z, w};
         return r;
     }
+
+    D2D1FORCEINLINE D2D1_POINT_2L Point2L(INT32 x = 0, INT32 y = 0) {
+        return Point2<INT32>(x, y);
+    }
+
+    D2D1FORCEINLINE D2D1_RECT_L RectL(INT32 left = 0.0f, INT32 top = 0.0f, INT32 right = 0.0f, INT32 bottom = 0.0f) {
+        return Rect<INT32>(left, top, right, bottom);
+    }
 }
 
 #endif /* D2D_USE_C_DEFINITIONS */
diff --git a/x86_64-w64-mingw32/include/d3d11.h b/x86_64-w64-mingw32/include/d3d11.h
index 34c846b..931fa51 100644
--- a/x86_64-w64-mingw32/include/d3d11.h
+++ b/x86_64-w64-mingw32/include/d3d11.h
@@ -167,6 +167,56 @@
 typedef interface ID3D11DeviceContext ID3D11DeviceContext;
 #endif
 
+#ifndef __ID3D11AuthenticatedChannel_FWD_DEFINED__
+#define __ID3D11AuthenticatedChannel_FWD_DEFINED__
+typedef interface ID3D11AuthenticatedChannel ID3D11AuthenticatedChannel;
+#endif
+
+#ifndef __ID3D11CryptoSession_FWD_DEFINED__
+#define __ID3D11CryptoSession_FWD_DEFINED__
+typedef interface ID3D11CryptoSession ID3D11CryptoSession;
+#endif
+
+#ifndef __ID3D11VideoDecoder_FWD_DEFINED__
+#define __ID3D11VideoDecoder_FWD_DEFINED__
+typedef interface ID3D11VideoDecoder ID3D11VideoDecoder;
+#endif
+
+#ifndef __ID3D11VideoProcessorEnumerator_FWD_DEFINED__
+#define __ID3D11VideoProcessorEnumerator_FWD_DEFINED__
+typedef interface ID3D11VideoProcessorEnumerator ID3D11VideoProcessorEnumerator;
+#endif
+
+#ifndef __ID3D11VideoProcessor_FWD_DEFINED__
+#define __ID3D11VideoProcessor_FWD_DEFINED__
+typedef interface ID3D11VideoProcessor ID3D11VideoProcessor;
+#endif
+
+#ifndef __ID3D11VideoDecoderOutputView_FWD_DEFINED__
+#define __ID3D11VideoDecoderOutputView_FWD_DEFINED__
+typedef interface ID3D11VideoDecoderOutputView ID3D11VideoDecoderOutputView;
+#endif
+
+#ifndef __ID3D11VideoProcessorInputView_FWD_DEFINED__
+#define __ID3D11VideoProcessorInputView_FWD_DEFINED__
+typedef interface ID3D11VideoProcessorInputView ID3D11VideoProcessorInputView;
+#endif
+
+#ifndef __ID3D11VideoProcessorOutputView_FWD_DEFINED__
+#define __ID3D11VideoProcessorOutputView_FWD_DEFINED__
+typedef interface ID3D11VideoProcessorOutputView ID3D11VideoProcessorOutputView;
+#endif
+
+#ifndef __ID3D11VideoDevice_FWD_DEFINED__
+#define __ID3D11VideoDevice_FWD_DEFINED__
+typedef interface ID3D11VideoDevice ID3D11VideoDevice;
+#endif
+
+#ifndef __ID3D11VideoContext_FWD_DEFINED__
+#define __ID3D11VideoContext_FWD_DEFINED__
+typedef interface ID3D11VideoContext ID3D11VideoContext;
+#endif
+
 #ifndef __ID3D11Device_FWD_DEFINED__
 #define __ID3D11Device_FWD_DEFINED__
 typedef interface ID3D11Device ID3D11Device;
@@ -187,6 +237,26 @@
 typedef D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;
 typedef D3D_SRV_DIMENSION D3D11_SRV_DIMENSION;
 typedef RECT D3D11_RECT;
+#ifndef __ID3D11Device_FWD_DEFINED__
+#define __ID3D11Device_FWD_DEFINED__
+typedef interface ID3D11Device ID3D11Device;
+#endif
+
+#ifndef __ID3D11ClassLinkage_FWD_DEFINED__
+#define __ID3D11ClassLinkage_FWD_DEFINED__
+typedef interface ID3D11ClassLinkage ID3D11ClassLinkage;
+#endif
+
+#ifndef __ID3D11Resource_FWD_DEFINED__
+#define __ID3D11Resource_FWD_DEFINED__
+typedef interface ID3D11Resource ID3D11Resource;
+#endif
+
+#ifndef __ID3D11VideoProcessorInputView_FWD_DEFINED__
+#define __ID3D11VideoProcessorInputView_FWD_DEFINED__
+typedef interface ID3D11VideoProcessorInputView ID3D11VideoProcessorInputView;
+#endif
+
 #define D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT (14)
 
 #define D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS (4)
@@ -295,6 +365,8 @@
 #define D3D11_DEFAULT_VIEWPORT_WIDTH (0)
 
 #define D3D11_FLOAT32_MAX         (3.402823466e+38f)
+#define D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (32)
+
 #define D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT (8)
 
 #define D3D11_MAX_MAXANISOTROPY (16)
@@ -305,6 +377,10 @@
 
 #define D3D11_VIEWPORT_BOUNDS_MIN (-32768)
 
+#define D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX (15)
+
+#define D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
+
 #define D3D11_SHADER_MAJOR_VERSION (5)
 
 #define D3D11_SHADER_MAX_INSTANCES (65535)
@@ -319,6 +395,8 @@
 
 #define D3D11_VS_OUTPUT_REGISTER_COUNT (32)
 
+#define D3D11_OMAC_SIZE (16)
+
 #define D3D11_PS_CS_UAV_REGISTER_COMPONENTS (1)
 
 #define D3D11_PS_CS_UAV_REGISTER_COUNT (8)
@@ -494,6 +572,49 @@
     D3D11_BLEND_OP_MIN = 4,
     D3D11_BLEND_OP_MAX = 5
 } D3D11_BLEND_OP;
+typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
+    D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
+    D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
+    D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
+    D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
+    D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
+    D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
+    D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
+    D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
+    D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8
+} D3D11_VIDEO_DECODER_BUFFER_TYPE;
+typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE {
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3
+} D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE;
+typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE {
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2
+} D3D11_VIDEO_PROCESSOR_OUTPUT_RATE;
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT {
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7
+} D3D11_VIDEO_PROCESSOR_STEREO_FORMAT;
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE {
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2
+} D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE;
+typedef enum D3D11_VIDEO_PROCESSOR_ROTATION {
+    D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
+    D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
+    D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
+    D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3
+} D3D11_VIDEO_PROCESSOR_ROTATION;
 typedef struct D3D11_BOX {
     UINT left;
     UINT top;
@@ -597,8 +718,29 @@
     D3D11_FEATURE_DOUBLES = 1,
     D3D11_FEATURE_FORMAT_SUPPORT = 2,
     D3D11_FEATURE_FORMAT_SUPPORT2 = 3,
-    D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS = 4
+    D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS = 4,
+    D3D11_FEATURE_D3D11_OPTIONS = 5,
+    D3D11_FEATURE_ARCHITECTURE_INFO = 6,
+    D3D11_FEATURE_D3D9_OPTIONS = 7,
+    D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT = 8,
+    D3D11_FEATURE_D3D9_SHADOW_SUPPORT = 9
 } D3D11_FEATURE;
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
+    WINBOOL OutputMergerLogicOp;
+    WINBOOL UAVOnlyRenderingForcedSampleCount;
+    WINBOOL DiscardAPIsSeenByDriver;
+    WINBOOL FlagsForUpdateAndCopySeenByDriver;
+    WINBOOL ClearView;
+    WINBOOL CopyWithOverlap;
+    WINBOOL ConstantBufferPartialUpdate;
+    WINBOOL ConstantBufferOffsetting;
+    WINBOOL MapNoOverwriteOnDynamicConstantBuffer;
+    WINBOOL MapNoOverwriteOnDynamicBufferSRV;
+    WINBOOL MultisampleRTVWithForcedSampleCountOne;
+    WINBOOL SAD4ShaderInstructions;
+    WINBOOL ExtendedDoublesShaderInstructions;
+    WINBOOL ExtendedResourceSharing;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS;
 typedef enum D3D11_FILL_MODE {
     D3D11_FILL_WIREFRAME = 2,
     D3D11_FILL_SOLID = 3
@@ -716,6 +858,9 @@
     D3D11_QUERY_SO_STATISTICS_STREAM3 = 14,
     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 = 15
 } D3D11_QUERY;
+typedef enum D3D11_QUERY_MISC_FLAG {
+    D3D11_QUERY_MISC_PREDICATEHINT = 0x1
+} D3D11_QUERY_MISC_FLAG;
 typedef enum D3D11_ASYNC_GETDATA_FLAG {
     D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x1
 } D3D11_ASYNC_GETDATA_FLAG;
@@ -1038,7 +1183,11 @@
     D3D11_FORMAT_SUPPORT_SHADER_GATHER = 0x800000,
     D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST = 0x1000000,
     D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
-    D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000
+    D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000,
+    D3D11_FORMAT_SUPPORT_DECODER_OUTPUT = 0x8000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT = 0x20000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_ENCODER = 0x40000000
 } D3D11_FORMAT_SUPPORT;
 typedef enum D3D11_CLEAR_FLAG {
     D3D11_CLEAR_DEPTH = 0x1,
@@ -1147,6 +1296,70 @@
         D3D11_TEX3D_RTV Texture3D;
     } __C89_NAMELESSUNIONNAME;
 } D3D11_RENDER_TARGET_VIEW_DESC;
+#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)
+struct CD3D11_RENDER_TARGET_VIEW_DESC : public D3D11_RENDER_TARGET_VIEW_DESC {
+    CD3D11_RENDER_TARGET_VIEW_DESC() {}
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(D3D11_RTV_DIMENSION dim, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
+            UINT mip_slice = 0, UINT first_slice = 0, UINT array_size = -1) {
+        Format = format;
+        ViewDimension = dim;
+        switch(dim) {
+        case D3D11_RTV_DIMENSION_BUFFER:
+            Buffer.FirstElement = mip_slice;
+            Buffer.NumElements = first_slice;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE1D:
+            Texture1D.MipSlice = mip_slice;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:
+            Texture1DArray.MipSlice = mip_slice;
+            Texture1DArray.FirstArraySlice = first_slice;
+            Texture1DArray.ArraySize = array_size;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE2D:
+            Texture2D.MipSlice = mip_slice;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE2DARRAY:
+            Texture2DArray.MipSlice = mip_slice;
+            Texture2DArray.FirstArraySlice = first_slice;
+            Texture2DArray.ArraySize = array_size;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY:
+            Texture2DMSArray.FirstArraySlice = first_slice;
+            Texture2DMSArray.ArraySize = array_size;
+            break;
+        case D3D11_RTV_DIMENSION_TEXTURE3D:
+            Texture3D.MipSlice = mip_slice;
+            Texture3D.FirstWSlice = first_slice;
+            Texture3D.WSize = array_size;
+            break;
+        default:
+            break;
+        }
+    }
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,
+            UINT elem_cnt) {
+        Format = format;
+        ViewDimension = D3D11_RTV_DIMENSION_BUFFER;
+        Buffer.FirstElement = first_elem;
+        Buffer.NumElements = elem_cnt;
+    }
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture1D *texture, D3D11_RTV_DIMENSION dim,
+            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,
+            UINT array_size = -1);
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture2D *texture, D3D11_RTV_DIMENSION dim,
+            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,
+            UINT array_size = -1);
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
+            UINT mip_slice = 0, UINT first_w_slice = 0, UINT w_slice = -1 );
+    ~CD3D11_RENDER_TARGET_VIEW_DESC() {}
+    explicit CD3D11_RENDER_TARGET_VIEW_DESC(const D3D11_RENDER_TARGET_VIEW_DESC &other)
+        : D3D11_RENDER_TARGET_VIEW_DESC(other) {}
+    operator const D3D11_RENDER_TARGET_VIEW_DESC&() const {
+        return *this;
+    }
+};
+#endif
 typedef struct D3D11_SAMPLER_DESC {
     D3D11_FILTER Filter;
     D3D11_TEXTURE_ADDRESS_MODE AddressU;
@@ -1218,6 +1431,84 @@
         D3D11_BUFFEREX_SRV BufferEx;
     } __C89_NAMELESSUNIONNAME;
 } D3D11_SHADER_RESOURCE_VIEW_DESC;
+#if !defined(D3D11_NO_HELPERS) && defined( __cplusplus )
+struct CD3D11_SHADER_RESOURCE_VIEW_DESC : public D3D11_SHADER_RESOURCE_VIEW_DESC {
+    CD3D11_SHADER_RESOURCE_VIEW_DESC() {}
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(D3D11_SRV_DIMENSION dim,
+            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0,
+            UINT mip_levels = -1, UINT first_slice = 0, UINT array_size = -1, UINT flags = 0) {
+        Format = format;
+        ViewDimension = dim;
+        switch(ViewDimension) {
+        case D3D11_SRV_DIMENSION_BUFFER:
+            Buffer.FirstElement = most_detailed_mip;
+            Buffer.NumElements = mip_levels;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE1D:
+            Texture1D.MostDetailedMip = most_detailed_mip;
+            Texture1D.MipLevels = mip_levels;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:
+            Texture1DArray.MostDetailedMip = most_detailed_mip;
+            Texture1DArray.MipLevels = mip_levels;
+            Texture1DArray.FirstArraySlice = first_slice;
+            Texture1DArray.ArraySize = array_size;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE2D:
+            Texture2D.MostDetailedMip = most_detailed_mip;
+            Texture2D.MipLevels = mip_levels;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE2DARRAY:
+            Texture2DArray.MostDetailedMip = most_detailed_mip;
+            Texture2DArray.MipLevels = mip_levels;
+            Texture2DArray.FirstArraySlice = first_slice;
+            Texture2DArray.ArraySize = array_size;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY:
+            Texture2DMSArray.FirstArraySlice = first_slice;
+            Texture2DMSArray.ArraySize = array_size;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURE3D:
+            Texture3D.MostDetailedMip = most_detailed_mip;
+            Texture3D.MipLevels = mip_levels;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURECUBE:
+            TextureCube.MostDetailedMip = most_detailed_mip;
+            TextureCube.MipLevels = mip_levels;
+            break;
+        case D3D11_SRV_DIMENSION_TEXTURECUBEARRAY:
+            TextureCubeArray.MostDetailedMip = most_detailed_mip;
+            TextureCubeArray.MipLevels = mip_levels;
+            TextureCubeArray.First2DArrayFace = first_slice;
+            TextureCubeArray.NumCubes = array_size;
+            break;
+        case D3D11_SRV_DIMENSION_BUFFEREX:
+            BufferEx.FirstElement = most_detailed_mip;
+            BufferEx.NumElements = mip_levels;
+            BufferEx.Flags = flags;
+            break;
+        default:
+            break;
+        }
+    }
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,
+            UINT elem_cnt, UINT flags = 0);
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture1D *texture, D3D11_SRV_DIMENSION dim,
+            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,
+            UINT first_slice = 0, UINT array_size = -1 );
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture2D *texture, D3D11_SRV_DIMENSION dim,
+            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,
+            UINT first_slice = 0, UINT array_size = -1 );
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
+            UINT most_detailed_mip = 0, UINT mip_levels = -1 );
+    ~CD3D11_SHADER_RESOURCE_VIEW_DESC() {}
+    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(const D3D11_SHADER_RESOURCE_VIEW_DESC &other)
+        : D3D11_SHADER_RESOURCE_VIEW_DESC(other) {}
+    operator const D3D11_SHADER_RESOURCE_VIEW_DESC&() const {
+        return *this;
+    }
+};
+#endif
 typedef struct D3D11_TEXTURE1D_DESC {
     UINT Width;
     UINT MipLevels;
@@ -1275,16 +1566,234 @@
     UINT CPUAccessFlags;
     UINT MiscFlags;
 } D3D11_TEXTURE3D_DESC;
-#ifndef __ID3D11Device_FWD_DEFINED__
-#define __ID3D11Device_FWD_DEFINED__
-typedef interface ID3D11Device ID3D11Device;
-#endif
-
-#ifndef __ID3D11ClassLinkage_FWD_DEFINED__
-#define __ID3D11ClassLinkage_FWD_DEFINED__
-typedef interface ID3D11ClassLinkage ID3D11ClassLinkage;
-#endif
-
+typedef struct D3D11_VIDEO_DECODER_DESC {
+    GUID Guid;
+    UINT SampleWidth;
+    UINT SampleHeight;
+    DXGI_FORMAT OutputFormat;
+} D3D11_VIDEO_DECODER_DESC;
+typedef struct D3D11_VIDEO_DECODER_CONFIG {
+    GUID guidConfigBitstreamEncryption;
+    GUID guidConfigMBcontrolEncryption;
+    GUID guidConfigResidDiffEncryption;
+    UINT ConfigBitstreamRaw;
+    UINT ConfigMBcontrolRasterOrder;
+    UINT ConfigResidDiffHost;
+    UINT ConfigSpatialResid8;
+    UINT ConfigResid8Subtraction;
+    UINT ConfigSpatialHost8or9Clipping;
+    UINT ConfigSpatialResidInterleaved;
+    UINT ConfigIntraResidUnsigned;
+    UINT ConfigResidDiffAccelerator;
+    UINT ConfigHostInverseScan;
+    UINT ConfigSpecificIDCT;
+    UINT Config4GroupedCoefs;
+    USHORT ConfigMinRenderTargetBuffCount;
+    USHORT ConfigDecoderSpecific;
+} D3D11_VIDEO_DECODER_CONFIG;
+typedef enum D3D11_VIDEO_FRAME_FORMAT {
+    D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
+    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
+    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
+} D3D11_VIDEO_FRAME_FORMAT;
+typedef enum D3D11_VIDEO_USAGE {
+    D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
+    D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
+    D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2
+} D3D11_VIDEO_USAGE;
+typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC {
+    D3D11_VIDEO_FRAME_FORMAT InputFrameFormat;
+    DXGI_RATIONAL InputFrameRate;
+    UINT InputWidth;
+    UINT InputHeight;
+    DXGI_RATIONAL OutputFrameRate;
+    UINT OutputWidth;
+    UINT OutputHeight;
+    D3D11_VIDEO_USAGE Usage;
+} D3D11_VIDEO_PROCESSOR_CONTENT_DESC;
+typedef struct D3D11_VIDEO_PROCESSOR_CAPS {
+    UINT DeviceCaps;
+    UINT FeatureCaps;
+    UINT FilterCaps;
+    UINT InputFormatCaps;
+    UINT AutoStreamCaps;
+    UINT StereoCaps;
+    UINT RateConversionCapsCount;
+    UINT MaxInputStreams;
+    UINT MaxStreamStates;
+} D3D11_VIDEO_PROCESSOR_CAPS;
+typedef struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS {
+    UINT PastFrames;
+    UINT FutureFrames;
+    UINT ProcessorCaps;
+    UINT ITelecineCaps;
+    UINT CustomRateCount;
+} D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS;
+typedef struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE {
+    DXGI_RATIONAL CustomRate;
+    UINT OutputFrames;
+    WINBOOL InputInterlaced;
+    UINT InputFramesOrFields;
+} D3D11_VIDEO_PROCESSOR_CUSTOM_RATE;
+typedef enum D3D11_VIDEO_PROCESSOR_FILTER {
+    D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
+    D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
+    D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
+    D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
+    D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
+    D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
+    D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
+    D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7
+} D3D11_VIDEO_PROCESSOR_FILTER;
+typedef struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE {
+    int Minimum;
+    int Maximum;
+    int Default;
+    float Multiplier;
+} D3D11_VIDEO_PROCESSOR_FILTER_RANGE;
+typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
+    D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
+    D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
+    D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3
+} D3D11_AUTHENTICATED_CHANNEL_TYPE;
+typedef enum D3D11_VDOV_DIMENSION {
+    D3D11_VDOV_DIMENSION_UNKNOWN = 0,
+    D3D11_VDOV_DIMENSION_TEXTURE2D = 1
+} D3D11_VDOV_DIMENSION;
+typedef struct D3D11_TEX2D_VDOV {
+    UINT ArraySlice;
+} D3D11_TEX2D_VDOV;
+typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
+    GUID DecodeProfile;
+    D3D11_VDOV_DIMENSION ViewDimension;
+    __C89_NAMELESS union {
+        D3D11_TEX2D_VDOV Texture2D;
+    } __C89_NAMELESSUNIONNAME;
+} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
+typedef enum D3D11_VPIV_DIMENSION {
+    D3D11_VPIV_DIMENSION_UNKNOWN = 0,
+    D3D11_VPIV_DIMENSION_TEXTURE2D = 1
+} D3D11_VPIV_DIMENSION;
+typedef struct D3D11_TEX2D_VPIV {
+    UINT MipSlice;
+    UINT ArraySlice;
+} D3D11_TEX2D_VPIV;
+typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
+    UINT FourCC;
+    D3D11_VPIV_DIMENSION ViewDimension;
+    __C89_NAMELESS union {
+        D3D11_TEX2D_VPIV Texture2D;
+    } __C89_NAMELESSUNIONNAME;
+} D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC;
+typedef enum D3D11_VPOV_DIMENSION {
+    D3D11_VPOV_DIMENSION_UNKNOWN = 0,
+    D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
+    D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2
+} D3D11_VPOV_DIMENSION;
+typedef struct D3D11_TEX2D_VPOV {
+    UINT MipSlice;
+} D3D11_TEX2D_VPOV;
+typedef struct D3D11_TEX2D_ARRAY_VPOV {
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D11_TEX2D_ARRAY_VPOV;
+typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC {
+    D3D11_VPOV_DIMENSION ViewDimension;
+    __C89_NAMELESS union {
+        D3D11_TEX2D_VPOV Texture2D;
+        D3D11_TEX2D_ARRAY_VPOV Texture2DArray;
+    } __C89_NAMELESSUNIONNAME;
+} D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC;
+typedef struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS {
+    UINT Caps;
+    UINT KeyExchangeTypeCount;
+    UINT BlockAlignmentSize;
+    ULONGLONG ProtectedMemorySize;
+} D3D11_VIDEO_CONTENT_PROTECTION_CAPS;
+typedef struct D3D11_ENCRYPTED_BLOCK_INFO {
+    UINT NumEncryptedBytesAtBeginning;
+    UINT NumBytesInSkipPattern;
+    UINT NumBytesInEncryptPattern;
+} D3D11_ENCRYPTED_BLOCK_INFO;
+typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC {
+    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
+    UINT BufferIndex;
+    UINT DataOffset;
+    UINT DataSize;
+    UINT FirstMBaddress;
+    UINT NumMBsInBuffer;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    UINT ReservedBits;
+    void *pIV;
+    UINT IVSize;
+    WINBOOL PartialEncryption;
+    D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo;
+} D3D11_VIDEO_DECODER_BUFFER_DESC;
+typedef struct D3D11_VIDEO_DECODER_EXTENSION {
+    UINT Function;
+    void *pPrivateInputData;
+    UINT PrivateInputDataSize;
+    void *pPrivateOutputData;
+    UINT PrivateOutputDataSize;
+    UINT ResourceCount;
+    ID3D11Resource **ppResourceList;
+} D3D11_VIDEO_DECODER_EXTENSION;
+typedef struct D3D11_VIDEO_COLOR_YCbCrA {
+    float Y;
+    float Cb;
+    float Cr;
+    float A;
+} D3D11_VIDEO_COLOR_YCbCrA;
+typedef struct D3D11_VIDEO_COLOR_RGBA {
+    float R;
+    float G;
+    float B;
+    float A;
+} D3D11_VIDEO_COLOR_RGBA;
+typedef struct D3D11_VIDEO_COLOR {
+    __C89_NAMELESS union {
+        D3D11_VIDEO_COLOR_YCbCrA YCbCr;
+        D3D11_VIDEO_COLOR_RGBA RGBA;
+    } __C89_NAMELESSUNIONNAME;
+} D3D11_VIDEO_COLOR;
+typedef struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE {
+    UINT Usage : 1;
+    UINT RGB_Range : 1;
+    UINT YCbCr_Matrix : 1;
+    UINT YCbCr_xvYCC : 1;
+    UINT Nominal_Range : 2;
+    UINT Reserved : 26;
+} D3D11_VIDEO_PROCESSOR_COLOR_SPACE;
+typedef struct D3D11_VIDEO_PROCESSOR_STREAM {
+    WINBOOL Enable;
+    UINT OutputIndex;
+    UINT InputFrameOrField;
+    UINT PastFrames;
+    UINT FutureFrames;
+    ID3D11VideoProcessorInputView **ppPastSurfaces;
+    ID3D11VideoProcessorInputView *pInputSurface;
+    ID3D11VideoProcessorInputView **ppFutureSurfaces;
+    ID3D11VideoProcessorInputView **ppPastSurfacesRight;
+    ID3D11VideoProcessorInputView *pInputSurfaceRight;
+    ID3D11VideoProcessorInputView **ppFutureSurfacesRight;
+} D3D11_VIDEO_PROCESSOR_STREAM;
+typedef struct D3D11_OMAC {
+    BYTE Omac[16];
+} D3D11_OMAC;
+typedef struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT {
+    D3D11_OMAC omac;
+    GUID ConfigureType;
+    HANDLE hChannel;
+    UINT SequenceNumber;
+    HRESULT ReturnCode;
+} D3D11_AUTHENTICATED_CONFIGURE_OUTPUT;
+typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
+    UINT64 Frequency;
+    WINBOOL Disjoint;
+} D3D11_QUERY_DATA_TIMESTAMP_DISJOINT;
 /*****************************************************************************
  * ID3D11DeviceChild interface
  */
@@ -7791,6 +8300,3474 @@
 #endif  /* __ID3D11DeviceContext_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * ID3D11AuthenticatedChannel interface
+ */
+#ifndef __ID3D11AuthenticatedChannel_INTERFACE_DEFINED__
+#define __ID3D11AuthenticatedChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11AuthenticatedChannel, 0x3015a308, 0xdcbd, 0x47aa, 0xa7,0x47, 0x19,0x24,0x86,0xd1,0x4d,0x4a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3015a308-dcbd-47aa-a747-192486d14d4a")
+ID3D11AuthenticatedChannel : public ID3D11DeviceChild
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCertificateSize(
+        UINT *pCertificateSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCertificate(
+        UINT CertificateSize,
+        BYTE *pCertificate) = 0;
+
+    virtual void STDMETHODCALLTYPE GetChannelHandle(
+        HANDLE *pChannelHandle) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11AuthenticatedChannel, 0x3015a308, 0xdcbd, 0x47aa, 0xa7,0x47, 0x19,0x24,0x86,0xd1,0x4d,0x4a)
+#endif
+#else
+typedef struct ID3D11AuthenticatedChannelVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11AuthenticatedChannel* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11AuthenticatedChannel* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11AuthenticatedChannel* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11AuthenticatedChannel* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11AuthenticatedChannel* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11AuthenticatedChannel* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11AuthenticatedChannel* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11AuthenticatedChannel methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCertificateSize)(
+        ID3D11AuthenticatedChannel* This,
+        UINT *pCertificateSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetCertificate)(
+        ID3D11AuthenticatedChannel* This,
+        UINT CertificateSize,
+        BYTE *pCertificate);
+
+    void (STDMETHODCALLTYPE *GetChannelHandle)(
+        ID3D11AuthenticatedChannel* This,
+        HANDLE *pChannelHandle);
+
+    END_INTERFACE
+} ID3D11AuthenticatedChannelVtbl;
+interface ID3D11AuthenticatedChannel {
+    CONST_VTBL ID3D11AuthenticatedChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11AuthenticatedChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11AuthenticatedChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11AuthenticatedChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11AuthenticatedChannel_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11AuthenticatedChannel_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11AuthenticatedChannel_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11AuthenticatedChannel_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11AuthenticatedChannel methods ***/
+#define ID3D11AuthenticatedChannel_GetCertificateSize(This,pCertificateSize) (This)->lpVtbl->GetCertificateSize(This,pCertificateSize)
+#define ID3D11AuthenticatedChannel_GetCertificate(This,CertificateSize,pCertificate) (This)->lpVtbl->GetCertificate(This,CertificateSize,pCertificate)
+#define ID3D11AuthenticatedChannel_GetChannelHandle(This,pChannelHandle) (This)->lpVtbl->GetChannelHandle(This,pChannelHandle)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_QueryInterface(ID3D11AuthenticatedChannel* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11AuthenticatedChannel_AddRef(ID3D11AuthenticatedChannel* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11AuthenticatedChannel_Release(ID3D11AuthenticatedChannel* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11AuthenticatedChannel_GetDevice(ID3D11AuthenticatedChannel* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_GetPrivateData(ID3D11AuthenticatedChannel* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_SetPrivateData(ID3D11AuthenticatedChannel* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_SetPrivateDataInterface(ID3D11AuthenticatedChannel* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11AuthenticatedChannel methods ***/
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_GetCertificateSize(ID3D11AuthenticatedChannel* This,UINT *pCertificateSize) {
+    return This->lpVtbl->GetCertificateSize(This,pCertificateSize);
+}
+static FORCEINLINE HRESULT ID3D11AuthenticatedChannel_GetCertificate(ID3D11AuthenticatedChannel* This,UINT CertificateSize,BYTE *pCertificate) {
+    return This->lpVtbl->GetCertificate(This,CertificateSize,pCertificate);
+}
+static FORCEINLINE void ID3D11AuthenticatedChannel_GetChannelHandle(ID3D11AuthenticatedChannel* This,HANDLE *pChannelHandle) {
+    This->lpVtbl->GetChannelHandle(This,pChannelHandle);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11AuthenticatedChannel_GetCertificateSize_Proxy(
+    ID3D11AuthenticatedChannel* This,
+    UINT *pCertificateSize);
+void __RPC_STUB ID3D11AuthenticatedChannel_GetCertificateSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11AuthenticatedChannel_GetCertificate_Proxy(
+    ID3D11AuthenticatedChannel* This,
+    UINT CertificateSize,
+    BYTE *pCertificate);
+void __RPC_STUB ID3D11AuthenticatedChannel_GetCertificate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11AuthenticatedChannel_GetChannelHandle_Proxy(
+    ID3D11AuthenticatedChannel* This,
+    HANDLE *pChannelHandle);
+void __RPC_STUB ID3D11AuthenticatedChannel_GetChannelHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11AuthenticatedChannel_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11CryptoSession interface
+ */
+#ifndef __ID3D11CryptoSession_INTERFACE_DEFINED__
+#define __ID3D11CryptoSession_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11CryptoSession, 0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3,0x9d, 0xd5,0xc8,0x65,0x84,0x57,0x20);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9b32f9ad-bdcc-40a6-a39d-d5c865845720")
+ID3D11CryptoSession : public ID3D11DeviceChild
+{
+    virtual void STDMETHODCALLTYPE GetCryptoType(
+        GUID *pCryptoType) = 0;
+
+    virtual void STDMETHODCALLTYPE GetDecoderProfile(
+        GUID *pDecoderProfile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCertificateSize(
+        UINT *pCertificateSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCertificate(
+        UINT CertificateSize,
+        BYTE *pCertificate) = 0;
+
+    virtual void STDMETHODCALLTYPE GetCryptoSessionHandle(
+        HANDLE *pCryptoSessionHandle) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11CryptoSession, 0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3,0x9d, 0xd5,0xc8,0x65,0x84,0x57,0x20)
+#endif
+#else
+typedef struct ID3D11CryptoSessionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11CryptoSession* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11CryptoSession* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11CryptoSession* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11CryptoSession* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11CryptoSession* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11CryptoSession* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11CryptoSession* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11CryptoSession methods ***/
+    void (STDMETHODCALLTYPE *GetCryptoType)(
+        ID3D11CryptoSession* This,
+        GUID *pCryptoType);
+
+    void (STDMETHODCALLTYPE *GetDecoderProfile)(
+        ID3D11CryptoSession* This,
+        GUID *pDecoderProfile);
+
+    HRESULT (STDMETHODCALLTYPE *GetCertificateSize)(
+        ID3D11CryptoSession* This,
+        UINT *pCertificateSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetCertificate)(
+        ID3D11CryptoSession* This,
+        UINT CertificateSize,
+        BYTE *pCertificate);
+
+    void (STDMETHODCALLTYPE *GetCryptoSessionHandle)(
+        ID3D11CryptoSession* This,
+        HANDLE *pCryptoSessionHandle);
+
+    END_INTERFACE
+} ID3D11CryptoSessionVtbl;
+interface ID3D11CryptoSession {
+    CONST_VTBL ID3D11CryptoSessionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11CryptoSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11CryptoSession_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11CryptoSession_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11CryptoSession_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11CryptoSession_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11CryptoSession_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11CryptoSession_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11CryptoSession methods ***/
+#define ID3D11CryptoSession_GetCryptoType(This,pCryptoType) (This)->lpVtbl->GetCryptoType(This,pCryptoType)
+#define ID3D11CryptoSession_GetDecoderProfile(This,pDecoderProfile) (This)->lpVtbl->GetDecoderProfile(This,pDecoderProfile)
+#define ID3D11CryptoSession_GetCertificateSize(This,pCertificateSize) (This)->lpVtbl->GetCertificateSize(This,pCertificateSize)
+#define ID3D11CryptoSession_GetCertificate(This,CertificateSize,pCertificate) (This)->lpVtbl->GetCertificate(This,CertificateSize,pCertificate)
+#define ID3D11CryptoSession_GetCryptoSessionHandle(This,pCryptoSessionHandle) (This)->lpVtbl->GetCryptoSessionHandle(This,pCryptoSessionHandle)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11CryptoSession_QueryInterface(ID3D11CryptoSession* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11CryptoSession_AddRef(ID3D11CryptoSession* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11CryptoSession_Release(ID3D11CryptoSession* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11CryptoSession_GetDevice(ID3D11CryptoSession* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11CryptoSession_GetPrivateData(ID3D11CryptoSession* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11CryptoSession_SetPrivateData(ID3D11CryptoSession* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11CryptoSession_SetPrivateDataInterface(ID3D11CryptoSession* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11CryptoSession methods ***/
+static FORCEINLINE void ID3D11CryptoSession_GetCryptoType(ID3D11CryptoSession* This,GUID *pCryptoType) {
+    This->lpVtbl->GetCryptoType(This,pCryptoType);
+}
+static FORCEINLINE void ID3D11CryptoSession_GetDecoderProfile(ID3D11CryptoSession* This,GUID *pDecoderProfile) {
+    This->lpVtbl->GetDecoderProfile(This,pDecoderProfile);
+}
+static FORCEINLINE HRESULT ID3D11CryptoSession_GetCertificateSize(ID3D11CryptoSession* This,UINT *pCertificateSize) {
+    return This->lpVtbl->GetCertificateSize(This,pCertificateSize);
+}
+static FORCEINLINE HRESULT ID3D11CryptoSession_GetCertificate(ID3D11CryptoSession* This,UINT CertificateSize,BYTE *pCertificate) {
+    return This->lpVtbl->GetCertificate(This,CertificateSize,pCertificate);
+}
+static FORCEINLINE void ID3D11CryptoSession_GetCryptoSessionHandle(ID3D11CryptoSession* This,HANDLE *pCryptoSessionHandle) {
+    This->lpVtbl->GetCryptoSessionHandle(This,pCryptoSessionHandle);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE ID3D11CryptoSession_GetCryptoType_Proxy(
+    ID3D11CryptoSession* This,
+    GUID *pCryptoType);
+void __RPC_STUB ID3D11CryptoSession_GetCryptoType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11CryptoSession_GetDecoderProfile_Proxy(
+    ID3D11CryptoSession* This,
+    GUID *pDecoderProfile);
+void __RPC_STUB ID3D11CryptoSession_GetDecoderProfile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11CryptoSession_GetCertificateSize_Proxy(
+    ID3D11CryptoSession* This,
+    UINT *pCertificateSize);
+void __RPC_STUB ID3D11CryptoSession_GetCertificateSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11CryptoSession_GetCertificate_Proxy(
+    ID3D11CryptoSession* This,
+    UINT CertificateSize,
+    BYTE *pCertificate);
+void __RPC_STUB ID3D11CryptoSession_GetCertificate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11CryptoSession_GetCryptoSessionHandle_Proxy(
+    ID3D11CryptoSession* This,
+    HANDLE *pCryptoSessionHandle);
+void __RPC_STUB ID3D11CryptoSession_GetCryptoSessionHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11CryptoSession_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoDecoder interface
+ */
+#ifndef __ID3D11VideoDecoder_INTERFACE_DEFINED__
+#define __ID3D11VideoDecoder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoDecoder, 0x3c9c5b51, 0x995d, 0x48d1, 0x9b,0x8d, 0xfa,0x5c,0xae,0xde,0xd6,0x5c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3c9c5b51-995d-48d1-9b8d-fa5caeded65c")
+ID3D11VideoDecoder : public ID3D11DeviceChild
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
+        D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDriverHandle(
+        HANDLE *pDriverHandle) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoDecoder, 0x3c9c5b51, 0x995d, 0x48d1, 0x9b,0x8d, 0xfa,0x5c,0xae,0xde,0xd6,0x5c)
+#endif
+#else
+typedef struct ID3D11VideoDecoderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoDecoder* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoDecoder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoDecoder* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoDecoder* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoDecoder* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoDecoder* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoDecoder* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11VideoDecoder methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
+        ID3D11VideoDecoder* This,
+        D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig);
+
+    HRESULT (STDMETHODCALLTYPE *GetDriverHandle)(
+        ID3D11VideoDecoder* This,
+        HANDLE *pDriverHandle);
+
+    END_INTERFACE
+} ID3D11VideoDecoderVtbl;
+interface ID3D11VideoDecoder {
+    CONST_VTBL ID3D11VideoDecoderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoDecoder_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoDecoder_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoDecoder_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoDecoder_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11VideoDecoder methods ***/
+#define ID3D11VideoDecoder_GetCreationParameters(This,pVideoDesc,pConfig) (This)->lpVtbl->GetCreationParameters(This,pVideoDesc,pConfig)
+#define ID3D11VideoDecoder_GetDriverHandle(This,pDriverHandle) (This)->lpVtbl->GetDriverHandle(This,pDriverHandle)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoDecoder_QueryInterface(ID3D11VideoDecoder* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoDecoder_AddRef(ID3D11VideoDecoder* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoDecoder_Release(ID3D11VideoDecoder* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoDecoder_GetDevice(ID3D11VideoDecoder* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoder_GetPrivateData(ID3D11VideoDecoder* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoder_SetPrivateData(ID3D11VideoDecoder* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoder_SetPrivateDataInterface(ID3D11VideoDecoder* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11VideoDecoder methods ***/
+static FORCEINLINE HRESULT ID3D11VideoDecoder_GetCreationParameters(ID3D11VideoDecoder* This,D3D11_VIDEO_DECODER_DESC *pVideoDesc,D3D11_VIDEO_DECODER_CONFIG *pConfig) {
+    return This->lpVtbl->GetCreationParameters(This,pVideoDesc,pConfig);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoder_GetDriverHandle(ID3D11VideoDecoder* This,HANDLE *pDriverHandle) {
+    return This->lpVtbl->GetDriverHandle(This,pDriverHandle);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11VideoDecoder_GetCreationParameters_Proxy(
+    ID3D11VideoDecoder* This,
+    D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+    D3D11_VIDEO_DECODER_CONFIG *pConfig);
+void __RPC_STUB ID3D11VideoDecoder_GetCreationParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDecoder_GetDriverHandle_Proxy(
+    ID3D11VideoDecoder* This,
+    HANDLE *pDriverHandle);
+void __RPC_STUB ID3D11VideoDecoder_GetDriverHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoDecoder_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoProcessorEnumerator interface
+ */
+#ifndef __ID3D11VideoProcessorEnumerator_INTERFACE_DEFINED__
+#define __ID3D11VideoProcessorEnumerator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoProcessorEnumerator, 0x31627037, 0x53ab, 0x4200, 0x90,0x61, 0x05,0xfa,0xa9,0xab,0x45,0xf9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("31627037-53ab-4200-9061-05faa9ab45f9")
+ID3D11VideoProcessorEnumerator : public ID3D11DeviceChild
+{
+    virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorContentDesc(
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckVideoProcessorFormat(
+        DXGI_FORMAT Format,
+        UINT *pFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(
+        D3D11_VIDEO_PROCESSOR_CAPS *pCaps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorRateConversionCaps(
+        UINT TypeIndex,
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCustomRate(
+        UINT TypeIndex,
+        UINT CustomRateIndex,
+        D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorFilterRange(
+        D3D11_VIDEO_PROCESSOR_FILTER Filter,
+        D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoProcessorEnumerator, 0x31627037, 0x53ab, 0x4200, 0x90,0x61, 0x05,0xfa,0xa9,0xab,0x45,0xf9)
+#endif
+#else
+typedef struct ID3D11VideoProcessorEnumeratorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoProcessorEnumerator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoProcessorEnumerator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoProcessorEnumerator* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoProcessorEnumerator* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoProcessorEnumerator* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoProcessorEnumerator* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoProcessorEnumerator* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11VideoProcessorEnumerator methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetVideoProcessorContentDesc)(
+        ID3D11VideoProcessorEnumerator* This,
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc);
+
+    HRESULT (STDMETHODCALLTYPE *CheckVideoProcessorFormat)(
+        ID3D11VideoProcessorEnumerator* This,
+        DXGI_FORMAT Format,
+        UINT *pFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)(
+        ID3D11VideoProcessorEnumerator* This,
+        D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoProcessorRateConversionCaps)(
+        ID3D11VideoProcessorEnumerator* This,
+        UINT TypeIndex,
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCustomRate)(
+        ID3D11VideoProcessorEnumerator* This,
+        UINT TypeIndex,
+        UINT CustomRateIndex,
+        D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoProcessorFilterRange)(
+        ID3D11VideoProcessorEnumerator* This,
+        D3D11_VIDEO_PROCESSOR_FILTER Filter,
+        D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange);
+
+    END_INTERFACE
+} ID3D11VideoProcessorEnumeratorVtbl;
+interface ID3D11VideoProcessorEnumerator {
+    CONST_VTBL ID3D11VideoProcessorEnumeratorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoProcessorEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoProcessorEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoProcessorEnumerator_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoProcessorEnumerator_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoProcessorEnumerator_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoProcessorEnumerator_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoProcessorEnumerator_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11VideoProcessorEnumerator methods ***/
+#define ID3D11VideoProcessorEnumerator_GetVideoProcessorContentDesc(This,pContentDesc) (This)->lpVtbl->GetVideoProcessorContentDesc(This,pContentDesc)
+#define ID3D11VideoProcessorEnumerator_CheckVideoProcessorFormat(This,Format,pFlags) (This)->lpVtbl->CheckVideoProcessorFormat(This,Format,pFlags)
+#define ID3D11VideoProcessorEnumerator_GetVideoProcessorCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,pCaps)
+#define ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps(This,TypeIndex,pCaps) (This)->lpVtbl->GetVideoProcessorRateConversionCaps(This,TypeIndex,pCaps)
+#define ID3D11VideoProcessorEnumerator_GetVideoProcessorCustomRate(This,TypeIndex,CustomRateIndex,pRate) (This)->lpVtbl->GetVideoProcessorCustomRate(This,TypeIndex,CustomRateIndex,pRate)
+#define ID3D11VideoProcessorEnumerator_GetVideoProcessorFilterRange(This,Filter,pRange) (This)->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_QueryInterface(ID3D11VideoProcessorEnumerator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorEnumerator_AddRef(ID3D11VideoProcessorEnumerator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorEnumerator_Release(ID3D11VideoProcessorEnumerator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoProcessorEnumerator_GetDevice(ID3D11VideoProcessorEnumerator* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetPrivateData(ID3D11VideoProcessorEnumerator* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_SetPrivateData(ID3D11VideoProcessorEnumerator* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_SetPrivateDataInterface(ID3D11VideoProcessorEnumerator* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11VideoProcessorEnumerator methods ***/
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetVideoProcessorContentDesc(ID3D11VideoProcessorEnumerator* This,D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc) {
+    return This->lpVtbl->GetVideoProcessorContentDesc(This,pContentDesc);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_CheckVideoProcessorFormat(ID3D11VideoProcessorEnumerator* This,DXGI_FORMAT Format,UINT *pFlags) {
+    return This->lpVtbl->CheckVideoProcessorFormat(This,Format,pFlags);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetVideoProcessorCaps(ID3D11VideoProcessorEnumerator* This,D3D11_VIDEO_PROCESSOR_CAPS *pCaps) {
+    return This->lpVtbl->GetVideoProcessorCaps(This,pCaps);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps(ID3D11VideoProcessorEnumerator* This,UINT TypeIndex,D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps) {
+    return This->lpVtbl->GetVideoProcessorRateConversionCaps(This,TypeIndex,pCaps);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetVideoProcessorCustomRate(ID3D11VideoProcessorEnumerator* This,UINT TypeIndex,UINT CustomRateIndex,D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate) {
+    return This->lpVtbl->GetVideoProcessorCustomRate(This,TypeIndex,CustomRateIndex,pRate);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorEnumerator_GetVideoProcessorFilterRange(ID3D11VideoProcessorEnumerator* This,D3D11_VIDEO_PROCESSOR_FILTER Filter,D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange) {
+    return This->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_GetVideoProcessorContentDesc_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_GetVideoProcessorContentDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_CheckVideoProcessorFormat_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    DXGI_FORMAT Format,
+    UINT *pFlags);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_CheckVideoProcessorFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_GetVideoProcessorCaps_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_GetVideoProcessorCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    UINT TypeIndex,
+    D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_GetVideoProcessorCustomRate_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    UINT TypeIndex,
+    UINT CustomRateIndex,
+    D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_GetVideoProcessorCustomRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoProcessorEnumerator_GetVideoProcessorFilterRange_Proxy(
+    ID3D11VideoProcessorEnumerator* This,
+    D3D11_VIDEO_PROCESSOR_FILTER Filter,
+    D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange);
+void __RPC_STUB ID3D11VideoProcessorEnumerator_GetVideoProcessorFilterRange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoProcessorEnumerator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoProcessor interface
+ */
+#ifndef __ID3D11VideoProcessor_INTERFACE_DEFINED__
+#define __ID3D11VideoProcessor_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoProcessor, 0x1d7b0652, 0x185f, 0x41c6, 0x85,0xce, 0x0c,0x5b,0xe3,0xd4,0xae,0x6c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1d7b0652-185f-41c6-85ce-0c5be3d4ae6c")
+ID3D11VideoProcessor : public ID3D11DeviceChild
+{
+    virtual void STDMETHODCALLTYPE GetContentDesc(
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc) = 0;
+
+    virtual void STDMETHODCALLTYPE GetRateConversionCaps(
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoProcessor, 0x1d7b0652, 0x185f, 0x41c6, 0x85,0xce, 0x0c,0x5b,0xe3,0xd4,0xae,0x6c)
+#endif
+#else
+typedef struct ID3D11VideoProcessorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoProcessor* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoProcessor* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoProcessor* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoProcessor* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoProcessor* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoProcessor* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoProcessor* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11VideoProcessor methods ***/
+    void (STDMETHODCALLTYPE *GetContentDesc)(
+        ID3D11VideoProcessor* This,
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
+
+    void (STDMETHODCALLTYPE *GetRateConversionCaps)(
+        ID3D11VideoProcessor* This,
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+
+    END_INTERFACE
+} ID3D11VideoProcessorVtbl;
+interface ID3D11VideoProcessor {
+    CONST_VTBL ID3D11VideoProcessorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoProcessor_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoProcessor_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoProcessor_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoProcessor_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11VideoProcessor methods ***/
+#define ID3D11VideoProcessor_GetContentDesc(This,pDesc) (This)->lpVtbl->GetContentDesc(This,pDesc)
+#define ID3D11VideoProcessor_GetRateConversionCaps(This,pCaps) (This)->lpVtbl->GetRateConversionCaps(This,pCaps)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoProcessor_QueryInterface(ID3D11VideoProcessor* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessor_AddRef(ID3D11VideoProcessor* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessor_Release(ID3D11VideoProcessor* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoProcessor_GetDevice(ID3D11VideoProcessor* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessor_GetPrivateData(ID3D11VideoProcessor* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessor_SetPrivateData(ID3D11VideoProcessor* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessor_SetPrivateDataInterface(ID3D11VideoProcessor* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11VideoProcessor methods ***/
+static FORCEINLINE void ID3D11VideoProcessor_GetContentDesc(ID3D11VideoProcessor* This,D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc) {
+    This->lpVtbl->GetContentDesc(This,pDesc);
+}
+static FORCEINLINE void ID3D11VideoProcessor_GetRateConversionCaps(ID3D11VideoProcessor* This,D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps) {
+    This->lpVtbl->GetRateConversionCaps(This,pCaps);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE ID3D11VideoProcessor_GetContentDesc_Proxy(
+    ID3D11VideoProcessor* This,
+    D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
+void __RPC_STUB ID3D11VideoProcessor_GetContentDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoProcessor_GetRateConversionCaps_Proxy(
+    ID3D11VideoProcessor* This,
+    D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+void __RPC_STUB ID3D11VideoProcessor_GetRateConversionCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoProcessor_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoDecoderOutputView interface
+ */
+#ifndef __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__
+#define __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoDecoderOutputView, 0xc2931aea, 0x2a85, 0x4f20, 0x86,0x0f, 0xfb,0xa1,0xfd,0x25,0x6e,0x18);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c2931aea-2a85-4f20-860f-fba1fd256e18")
+ID3D11VideoDecoderOutputView : public ID3D11View
+{
+    virtual void STDMETHODCALLTYPE GetDesc(
+        D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoDecoderOutputView, 0xc2931aea, 0x2a85, 0x4f20, 0x86,0x0f, 0xfb,0xa1,0xfd,0x25,0x6e,0x18)
+#endif
+#else
+typedef struct ID3D11VideoDecoderOutputViewVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoDecoderOutputView* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoDecoderOutputView* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoDecoderOutputView* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoDecoderOutputView* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoDecoderOutputView* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoDecoderOutputView* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoDecoderOutputView* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11View methods ***/
+    void (STDMETHODCALLTYPE *GetResource)(
+        ID3D11VideoDecoderOutputView* This,
+        ID3D11Resource **ppResource);
+
+    /*** ID3D11VideoDecoderOutputView methods ***/
+    void (STDMETHODCALLTYPE *GetDesc)(
+        ID3D11VideoDecoderOutputView* This,
+        D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
+
+    END_INTERFACE
+} ID3D11VideoDecoderOutputViewVtbl;
+interface ID3D11VideoDecoderOutputView {
+    CONST_VTBL ID3D11VideoDecoderOutputViewVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoDecoderOutputView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoDecoderOutputView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoDecoderOutputView_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoDecoderOutputView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoDecoderOutputView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoDecoderOutputView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoDecoderOutputView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11View methods ***/
+#define ID3D11VideoDecoderOutputView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
+/*** ID3D11VideoDecoderOutputView methods ***/
+#define ID3D11VideoDecoderOutputView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoDecoderOutputView_QueryInterface(ID3D11VideoDecoderOutputView* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoDecoderOutputView_AddRef(ID3D11VideoDecoderOutputView* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoDecoderOutputView_Release(ID3D11VideoDecoderOutputView* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoDecoderOutputView_GetDevice(ID3D11VideoDecoderOutputView* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoderOutputView_GetPrivateData(ID3D11VideoDecoderOutputView* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoderOutputView_SetPrivateData(ID3D11VideoDecoderOutputView* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoDecoderOutputView_SetPrivateDataInterface(ID3D11VideoDecoderOutputView* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11View methods ***/
+static FORCEINLINE void ID3D11VideoDecoderOutputView_GetResource(ID3D11VideoDecoderOutputView* This,ID3D11Resource **ppResource) {
+    This->lpVtbl->GetResource(This,ppResource);
+}
+/*** ID3D11VideoDecoderOutputView methods ***/
+static FORCEINLINE void ID3D11VideoDecoderOutputView_GetDesc(ID3D11VideoDecoderOutputView* This,D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc) {
+    This->lpVtbl->GetDesc(This,pDesc);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE ID3D11VideoDecoderOutputView_GetDesc_Proxy(
+    ID3D11VideoDecoderOutputView* This,
+    D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
+void __RPC_STUB ID3D11VideoDecoderOutputView_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoProcessorInputView interface
+ */
+#ifndef __ID3D11VideoProcessorInputView_INTERFACE_DEFINED__
+#define __ID3D11VideoProcessorInputView_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoProcessorInputView, 0x11ec5a5f, 0x51dc, 0x4945, 0xab,0x34, 0x6e,0x8c,0x21,0x30,0x0e,0xa5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("11ec5a5f-51dc-4945-ab34-6e8c21300ea5")
+ID3D11VideoProcessorInputView : public ID3D11View
+{
+    virtual void STDMETHODCALLTYPE GetDesc(
+        D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoProcessorInputView, 0x11ec5a5f, 0x51dc, 0x4945, 0xab,0x34, 0x6e,0x8c,0x21,0x30,0x0e,0xa5)
+#endif
+#else
+typedef struct ID3D11VideoProcessorInputViewVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoProcessorInputView* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoProcessorInputView* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoProcessorInputView* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoProcessorInputView* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoProcessorInputView* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoProcessorInputView* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoProcessorInputView* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11View methods ***/
+    void (STDMETHODCALLTYPE *GetResource)(
+        ID3D11VideoProcessorInputView* This,
+        ID3D11Resource **ppResource);
+
+    /*** ID3D11VideoProcessorInputView methods ***/
+    void (STDMETHODCALLTYPE *GetDesc)(
+        ID3D11VideoProcessorInputView* This,
+        D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc);
+
+    END_INTERFACE
+} ID3D11VideoProcessorInputViewVtbl;
+interface ID3D11VideoProcessorInputView {
+    CONST_VTBL ID3D11VideoProcessorInputViewVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoProcessorInputView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoProcessorInputView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoProcessorInputView_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoProcessorInputView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoProcessorInputView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoProcessorInputView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoProcessorInputView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11View methods ***/
+#define ID3D11VideoProcessorInputView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
+/*** ID3D11VideoProcessorInputView methods ***/
+#define ID3D11VideoProcessorInputView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoProcessorInputView_QueryInterface(ID3D11VideoProcessorInputView* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorInputView_AddRef(ID3D11VideoProcessorInputView* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorInputView_Release(ID3D11VideoProcessorInputView* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoProcessorInputView_GetDevice(ID3D11VideoProcessorInputView* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorInputView_GetPrivateData(ID3D11VideoProcessorInputView* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorInputView_SetPrivateData(ID3D11VideoProcessorInputView* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorInputView_SetPrivateDataInterface(ID3D11VideoProcessorInputView* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11View methods ***/
+static FORCEINLINE void ID3D11VideoProcessorInputView_GetResource(ID3D11VideoProcessorInputView* This,ID3D11Resource **ppResource) {
+    This->lpVtbl->GetResource(This,ppResource);
+}
+/*** ID3D11VideoProcessorInputView methods ***/
+static FORCEINLINE void ID3D11VideoProcessorInputView_GetDesc(ID3D11VideoProcessorInputView* This,D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc) {
+    This->lpVtbl->GetDesc(This,pDesc);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE ID3D11VideoProcessorInputView_GetDesc_Proxy(
+    ID3D11VideoProcessorInputView* This,
+    D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc);
+void __RPC_STUB ID3D11VideoProcessorInputView_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoProcessorInputView_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoProcessorOutputView interface
+ */
+#ifndef __ID3D11VideoProcessorOutputView_INTERFACE_DEFINED__
+#define __ID3D11VideoProcessorOutputView_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoProcessorOutputView, 0xa048285e, 0x25a9, 0x4527, 0xbd,0x93, 0xd6,0x8b,0x68,0xc4,0x42,0x54);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a048285e-25a9-4527-bd93-d68b68c44254")
+ID3D11VideoProcessorOutputView : public ID3D11View
+{
+    virtual void STDMETHODCALLTYPE GetDesc(
+        D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoProcessorOutputView, 0xa048285e, 0x25a9, 0x4527, 0xbd,0x93, 0xd6,0x8b,0x68,0xc4,0x42,0x54)
+#endif
+#else
+typedef struct ID3D11VideoProcessorOutputViewVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoProcessorOutputView* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoProcessorOutputView* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoProcessorOutputView* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoProcessorOutputView* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoProcessorOutputView* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoProcessorOutputView* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoProcessorOutputView* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11View methods ***/
+    void (STDMETHODCALLTYPE *GetResource)(
+        ID3D11VideoProcessorOutputView* This,
+        ID3D11Resource **ppResource);
+
+    /*** ID3D11VideoProcessorOutputView methods ***/
+    void (STDMETHODCALLTYPE *GetDesc)(
+        ID3D11VideoProcessorOutputView* This,
+        D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc);
+
+    END_INTERFACE
+} ID3D11VideoProcessorOutputViewVtbl;
+interface ID3D11VideoProcessorOutputView {
+    CONST_VTBL ID3D11VideoProcessorOutputViewVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoProcessorOutputView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoProcessorOutputView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoProcessorOutputView_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoProcessorOutputView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoProcessorOutputView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoProcessorOutputView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoProcessorOutputView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11View methods ***/
+#define ID3D11VideoProcessorOutputView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
+/*** ID3D11VideoProcessorOutputView methods ***/
+#define ID3D11VideoProcessorOutputView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoProcessorOutputView_QueryInterface(ID3D11VideoProcessorOutputView* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorOutputView_AddRef(ID3D11VideoProcessorOutputView* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoProcessorOutputView_Release(ID3D11VideoProcessorOutputView* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoProcessorOutputView_GetDevice(ID3D11VideoProcessorOutputView* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorOutputView_GetPrivateData(ID3D11VideoProcessorOutputView* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorOutputView_SetPrivateData(ID3D11VideoProcessorOutputView* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoProcessorOutputView_SetPrivateDataInterface(ID3D11VideoProcessorOutputView* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11View methods ***/
+static FORCEINLINE void ID3D11VideoProcessorOutputView_GetResource(ID3D11VideoProcessorOutputView* This,ID3D11Resource **ppResource) {
+    This->lpVtbl->GetResource(This,ppResource);
+}
+/*** ID3D11VideoProcessorOutputView methods ***/
+static FORCEINLINE void ID3D11VideoProcessorOutputView_GetDesc(ID3D11VideoProcessorOutputView* This,D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc) {
+    This->lpVtbl->GetDesc(This,pDesc);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE ID3D11VideoProcessorOutputView_GetDesc_Proxy(
+    ID3D11VideoProcessorOutputView* This,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc);
+void __RPC_STUB ID3D11VideoProcessorOutputView_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoProcessorOutputView_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoDevice interface
+ */
+#ifndef __ID3D11VideoDevice_INTERFACE_DEFINED__
+#define __ID3D11VideoDevice_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoDevice, 0x10ec4d5b, 0x975a, 0x4689, 0xb9,0xe4, 0xd0,0xaa,0xc3,0x0f,0xe3,0x33);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("10ec4d5b-975a-4689-b9e4-d0aac30fe333")
+ID3D11VideoDevice : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
+        const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        const D3D11_VIDEO_DECODER_CONFIG *pConfig,
+        ID3D11VideoDecoder **ppDecoder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
+        ID3D11VideoProcessorEnumerator *pEnum,
+        UINT RateConversionIndex,
+        ID3D11VideoProcessor **ppVideoProcessor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateAuthenticatedChannel(
+        D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
+        ID3D11AuthenticatedChannel **ppAuthenticatedChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateCryptoSession(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        const GUID *pKeyExchangeType,
+        ID3D11CryptoSession **ppCryptoSession) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderOutputView(
+        ID3D11Resource *pResource,
+        const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoDecoderOutputView **ppVDOVView) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorInputView(
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorInputView **ppVPIView) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorOutputView(
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorOutputView **ppVPOView) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorEnumerator(
+        const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,
+        ID3D11VideoProcessorEnumerator **ppEnum) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetVideoDecoderProfileCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderProfile(
+        UINT Index,
+        GUID *pDecoderProfile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckVideoDecoderFormat(
+        const GUID *pDecoderProfile,
+        DXGI_FORMAT Format,
+        WINBOOL *pSupported) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderConfigCount(
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT *pCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderConfig(
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT Index,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetContentProtectionCaps(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckCryptoKeyExchange(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        UINT Index,
+        GUID *pKeyExchangeType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
+        REFGUID guid,
+        const IUnknown *pData) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoDevice, 0x10ec4d5b, 0x975a, 0x4689, 0xb9,0xe4, 0xd0,0xaa,0xc3,0x0f,0xe3,0x33)
+#endif
+#else
+typedef struct ID3D11VideoDeviceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoDevice* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoDevice* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoDevice* This);
+
+    /*** ID3D11VideoDevice methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
+        ID3D11VideoDevice* This,
+        const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        const D3D11_VIDEO_DECODER_CONFIG *pConfig,
+        ID3D11VideoDecoder **ppDecoder);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
+        ID3D11VideoDevice* This,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        UINT RateConversionIndex,
+        ID3D11VideoProcessor **ppVideoProcessor);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAuthenticatedChannel)(
+        ID3D11VideoDevice* This,
+        D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
+        ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
+
+    HRESULT (STDMETHODCALLTYPE *CreateCryptoSession)(
+        ID3D11VideoDevice* This,
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        const GUID *pKeyExchangeType,
+        ID3D11CryptoSession **ppCryptoSession);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderOutputView)(
+        ID3D11VideoDevice* This,
+        ID3D11Resource *pResource,
+        const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoDecoderOutputView **ppVDOVView);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorInputView)(
+        ID3D11VideoDevice* This,
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorInputView **ppVPIView);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorOutputView)(
+        ID3D11VideoDevice* This,
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorOutputView **ppVPOView);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorEnumerator)(
+        ID3D11VideoDevice* This,
+        const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,
+        ID3D11VideoProcessorEnumerator **ppEnum);
+
+    UINT (STDMETHODCALLTYPE *GetVideoDecoderProfileCount)(
+        ID3D11VideoDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderProfile)(
+        ID3D11VideoDevice* This,
+        UINT Index,
+        GUID *pDecoderProfile);
+
+    HRESULT (STDMETHODCALLTYPE *CheckVideoDecoderFormat)(
+        ID3D11VideoDevice* This,
+        const GUID *pDecoderProfile,
+        DXGI_FORMAT Format,
+        WINBOOL *pSupported);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderConfigCount)(
+        ID3D11VideoDevice* This,
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT *pCount);
+
+    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderConfig)(
+        ID3D11VideoDevice* This,
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT Index,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig);
+
+    HRESULT (STDMETHODCALLTYPE *GetContentProtectionCaps)(
+        ID3D11VideoDevice* This,
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps);
+
+    HRESULT (STDMETHODCALLTYPE *CheckCryptoKeyExchange)(
+        ID3D11VideoDevice* This,
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        UINT Index,
+        GUID *pKeyExchangeType);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoDevice* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoDevice* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    END_INTERFACE
+} ID3D11VideoDeviceVtbl;
+interface ID3D11VideoDevice {
+    CONST_VTBL ID3D11VideoDeviceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoDevice_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11VideoDevice methods ***/
+#define ID3D11VideoDevice_CreateVideoDecoder(This,pVideoDesc,pConfig,ppDecoder) (This)->lpVtbl->CreateVideoDecoder(This,pVideoDesc,pConfig,ppDecoder)
+#define ID3D11VideoDevice_CreateVideoProcessor(This,pEnum,RateConversionIndex,ppVideoProcessor) (This)->lpVtbl->CreateVideoProcessor(This,pEnum,RateConversionIndex,ppVideoProcessor)
+#define ID3D11VideoDevice_CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel) (This)->lpVtbl->CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel)
+#define ID3D11VideoDevice_CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession) (This)->lpVtbl->CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession)
+#define ID3D11VideoDevice_CreateVideoDecoderOutputView(This,pResource,pDesc,ppVDOVView) (This)->lpVtbl->CreateVideoDecoderOutputView(This,pResource,pDesc,ppVDOVView)
+#define ID3D11VideoDevice_CreateVideoProcessorInputView(This,pResource,pEnum,pDesc,ppVPIView) (This)->lpVtbl->CreateVideoProcessorInputView(This,pResource,pEnum,pDesc,ppVPIView)
+#define ID3D11VideoDevice_CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView) (This)->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView)
+#define ID3D11VideoDevice_CreateVideoProcessorEnumerator(This,pDesc,ppEnum) (This)->lpVtbl->CreateVideoProcessorEnumerator(This,pDesc,ppEnum)
+#define ID3D11VideoDevice_GetVideoDecoderProfileCount(This) (This)->lpVtbl->GetVideoDecoderProfileCount(This)
+#define ID3D11VideoDevice_GetVideoDecoderProfile(This,Index,pDecoderProfile) (This)->lpVtbl->GetVideoDecoderProfile(This,Index,pDecoderProfile)
+#define ID3D11VideoDevice_CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported) (This)->lpVtbl->CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported)
+#define ID3D11VideoDevice_GetVideoDecoderConfigCount(This,pDesc,pCount) (This)->lpVtbl->GetVideoDecoderConfigCount(This,pDesc,pCount)
+#define ID3D11VideoDevice_GetVideoDecoderConfig(This,pDesc,Index,pConfig) (This)->lpVtbl->GetVideoDecoderConfig(This,pDesc,Index,pConfig)
+#define ID3D11VideoDevice_GetContentProtectionCaps(This,pCryptoType,pDecoderProfile,pCaps) (This)->lpVtbl->GetContentProtectionCaps(This,pCryptoType,pDecoderProfile,pCaps)
+#define ID3D11VideoDevice_CheckCryptoKeyExchange(This,pCryptoType,pDecoderProfile,Index,pKeyExchangeType) (This)->lpVtbl->CheckCryptoKeyExchange(This,pCryptoType,pDecoderProfile,Index,pKeyExchangeType)
+#define ID3D11VideoDevice_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoDevice_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoDevice_QueryInterface(ID3D11VideoDevice* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoDevice_AddRef(ID3D11VideoDevice* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoDevice_Release(ID3D11VideoDevice* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11VideoDevice methods ***/
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoDecoder(ID3D11VideoDevice* This,const D3D11_VIDEO_DECODER_DESC *pVideoDesc,const D3D11_VIDEO_DECODER_CONFIG *pConfig,ID3D11VideoDecoder **ppDecoder) {
+    return This->lpVtbl->CreateVideoDecoder(This,pVideoDesc,pConfig,ppDecoder);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessor(ID3D11VideoDevice* This,ID3D11VideoProcessorEnumerator *pEnum,UINT RateConversionIndex,ID3D11VideoProcessor **ppVideoProcessor) {
+    return This->lpVtbl->CreateVideoProcessor(This,pEnum,RateConversionIndex,ppVideoProcessor);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateAuthenticatedChannel(ID3D11VideoDevice* This,D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,ID3D11AuthenticatedChannel **ppAuthenticatedChannel) {
+    return This->lpVtbl->CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateCryptoSession(ID3D11VideoDevice* This,const GUID *pCryptoType,const GUID *pDecoderProfile,const GUID *pKeyExchangeType,ID3D11CryptoSession **ppCryptoSession) {
+    return This->lpVtbl->CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoDecoderOutputView(ID3D11VideoDevice* This,ID3D11Resource *pResource,const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,ID3D11VideoDecoderOutputView **ppVDOVView) {
+    return This->lpVtbl->CreateVideoDecoderOutputView(This,pResource,pDesc,ppVDOVView);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessorInputView(ID3D11VideoDevice* This,ID3D11Resource *pResource,ID3D11VideoProcessorEnumerator *pEnum,const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,ID3D11VideoProcessorInputView **ppVPIView) {
+    return This->lpVtbl->CreateVideoProcessorInputView(This,pResource,pEnum,pDesc,ppVPIView);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessorOutputView(ID3D11VideoDevice* This,ID3D11Resource *pResource,ID3D11VideoProcessorEnumerator *pEnum,const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,ID3D11VideoProcessorOutputView **ppVPOView) {
+    return This->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessorEnumerator(ID3D11VideoDevice* This,const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,ID3D11VideoProcessorEnumerator **ppEnum) {
+    return This->lpVtbl->CreateVideoProcessorEnumerator(This,pDesc,ppEnum);
+}
+static FORCEINLINE UINT ID3D11VideoDevice_GetVideoDecoderProfileCount(ID3D11VideoDevice* This) {
+    return This->lpVtbl->GetVideoDecoderProfileCount(This);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_GetVideoDecoderProfile(ID3D11VideoDevice* This,UINT Index,GUID *pDecoderProfile) {
+    return This->lpVtbl->GetVideoDecoderProfile(This,Index,pDecoderProfile);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CheckVideoDecoderFormat(ID3D11VideoDevice* This,const GUID *pDecoderProfile,DXGI_FORMAT Format,WINBOOL *pSupported) {
+    return This->lpVtbl->CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_GetVideoDecoderConfigCount(ID3D11VideoDevice* This,const D3D11_VIDEO_DECODER_DESC *pDesc,UINT *pCount) {
+    return This->lpVtbl->GetVideoDecoderConfigCount(This,pDesc,pCount);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_GetVideoDecoderConfig(ID3D11VideoDevice* This,const D3D11_VIDEO_DECODER_DESC *pDesc,UINT Index,D3D11_VIDEO_DECODER_CONFIG *pConfig) {
+    return This->lpVtbl->GetVideoDecoderConfig(This,pDesc,Index,pConfig);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_GetContentProtectionCaps(ID3D11VideoDevice* This,const GUID *pCryptoType,const GUID *pDecoderProfile,D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps) {
+    return This->lpVtbl->GetContentProtectionCaps(This,pCryptoType,pDecoderProfile,pCaps);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_CheckCryptoKeyExchange(ID3D11VideoDevice* This,const GUID *pCryptoType,const GUID *pDecoderProfile,UINT Index,GUID *pKeyExchangeType) {
+    return This->lpVtbl->CheckCryptoKeyExchange(This,pCryptoType,pDecoderProfile,Index,pKeyExchangeType);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_SetPrivateData(ID3D11VideoDevice* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoDevice_SetPrivateDataInterface(ID3D11VideoDevice* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoDecoder_Proxy(
+    ID3D11VideoDevice* This,
+    const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+    const D3D11_VIDEO_DECODER_CONFIG *pConfig,
+    ID3D11VideoDecoder **ppDecoder);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoDecoder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessor_Proxy(
+    ID3D11VideoDevice* This,
+    ID3D11VideoProcessorEnumerator *pEnum,
+    UINT RateConversionIndex,
+    ID3D11VideoProcessor **ppVideoProcessor);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateAuthenticatedChannel_Proxy(
+    ID3D11VideoDevice* This,
+    D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
+    ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
+void __RPC_STUB ID3D11VideoDevice_CreateAuthenticatedChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateCryptoSession_Proxy(
+    ID3D11VideoDevice* This,
+    const GUID *pCryptoType,
+    const GUID *pDecoderProfile,
+    const GUID *pKeyExchangeType,
+    ID3D11CryptoSession **ppCryptoSession);
+void __RPC_STUB ID3D11VideoDevice_CreateCryptoSession_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoDecoderOutputView_Proxy(
+    ID3D11VideoDevice* This,
+    ID3D11Resource *pResource,
+    const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
+    ID3D11VideoDecoderOutputView **ppVDOVView);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoDecoderOutputView_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessorInputView_Proxy(
+    ID3D11VideoDevice* This,
+    ID3D11Resource *pResource,
+    ID3D11VideoProcessorEnumerator *pEnum,
+    const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,
+    ID3D11VideoProcessorInputView **ppVPIView);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorInputView_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessorOutputView_Proxy(
+    ID3D11VideoDevice* This,
+    ID3D11Resource *pResource,
+    ID3D11VideoProcessorEnumerator *pEnum,
+    const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,
+    ID3D11VideoProcessorOutputView **ppVPOView);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorOutputView_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessorEnumerator_Proxy(
+    ID3D11VideoDevice* This,
+    const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,
+    ID3D11VideoProcessorEnumerator **ppEnum);
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorEnumerator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderProfileCount_Proxy(
+    ID3D11VideoDevice* This);
+void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderProfileCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderProfile_Proxy(
+    ID3D11VideoDevice* This,
+    UINT Index,
+    GUID *pDecoderProfile);
+void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderProfile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CheckVideoDecoderFormat_Proxy(
+    ID3D11VideoDevice* This,
+    const GUID *pDecoderProfile,
+    DXGI_FORMAT Format,
+    WINBOOL *pSupported);
+void __RPC_STUB ID3D11VideoDevice_CheckVideoDecoderFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderConfigCount_Proxy(
+    ID3D11VideoDevice* This,
+    const D3D11_VIDEO_DECODER_DESC *pDesc,
+    UINT *pCount);
+void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderConfigCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderConfig_Proxy(
+    ID3D11VideoDevice* This,
+    const D3D11_VIDEO_DECODER_DESC *pDesc,
+    UINT Index,
+    D3D11_VIDEO_DECODER_CONFIG *pConfig);
+void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderConfig_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetContentProtectionCaps_Proxy(
+    ID3D11VideoDevice* This,
+    const GUID *pCryptoType,
+    const GUID *pDecoderProfile,
+    D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps);
+void __RPC_STUB ID3D11VideoDevice_GetContentProtectionCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CheckCryptoKeyExchange_Proxy(
+    ID3D11VideoDevice* This,
+    const GUID *pCryptoType,
+    const GUID *pDecoderProfile,
+    UINT Index,
+    GUID *pKeyExchangeType);
+void __RPC_STUB ID3D11VideoDevice_CheckCryptoKeyExchange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_SetPrivateData_Proxy(
+    ID3D11VideoDevice* This,
+    REFGUID guid,
+    UINT DataSize,
+    const void *pData);
+void __RPC_STUB ID3D11VideoDevice_SetPrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_SetPrivateDataInterface_Proxy(
+    ID3D11VideoDevice* This,
+    REFGUID guid,
+    const IUnknown *pData);
+void __RPC_STUB ID3D11VideoDevice_SetPrivateDataInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoDevice_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ID3D11VideoContext interface
+ */
+#ifndef __ID3D11VideoContext_INTERFACE_DEFINED__
+#define __ID3D11VideoContext_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11VideoContext, 0x61f21c45, 0x3c0e, 0x4a74, 0x9c,0xea, 0x67,0x10,0x0d,0x9a,0xd5,0xe4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("61f21c45-3c0e-4a74-9cea-67100d9ad5e4")
+ID3D11VideoContext : public ID3D11DeviceChild
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDecoderBuffer(
+        ID3D11VideoDecoder *decoder,
+        D3D11_VIDEO_DECODER_BUFFER_TYPE type,
+        UINT *buffer_size,
+        void **buffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseDecoderBuffer(
+        ID3D11VideoDecoder *decoder,
+        D3D11_VIDEO_DECODER_BUFFER_TYPE type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DecoderBeginFrame(
+        ID3D11VideoDecoder *decoder,
+        ID3D11VideoDecoderOutputView *view,
+        UINT key_size,
+        const void *key) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DecoderEndFrame(
+        ID3D11VideoDecoder *decoder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SubmitDecoderBuffers(
+        ID3D11VideoDecoder *decoder,
+        UINT buffers_count,
+        const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DecoderExtension(
+        ID3D11VideoDecoder *decoder,
+        const D3D11_VIDEO_DECODER_EXTENSION *extension) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputTargetRect(
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable,
+        const RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputBackgroundColor(
+        ID3D11VideoProcessor *processor,
+        WINBOOL y_cb_cr,
+        const D3D11_VIDEO_COLOR *color) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputColorSpace(
+        ID3D11VideoProcessor *processor,
+        const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputAlphaFillMode(
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,
+        UINT stream_idx) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputConstriction(
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable,
+        SIZE size) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetOutputStereoMode(
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE VideoProcessorSetOutputExtension(
+        ID3D11VideoProcessor *processor,
+        const GUID *guid,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputTargetRect(
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled,
+        RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputBackgroundColor(
+        ID3D11VideoProcessor *processor,
+        WINBOOL *y_cb_cr,
+        D3D11_VIDEO_COLOR *color) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputColorSpace(
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputAlphaFillMode(
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,
+        UINT *stream_idx) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputConstriction(
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled,
+        SIZE *size) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetOutputStereoMode(
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE VideoProcessorGetOutputExtension(
+        ID3D11VideoProcessor *processor,
+        const GUID *guid,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamFrameFormat(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_FRAME_FORMAT format) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamColorSpace(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamOutputRate(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,
+        WINBOOL repeat,
+        const DXGI_RATIONAL *custom_rate) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamSourceRect(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamDestRect(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamAlpha(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        float alpha) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamPalette(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        UINT entry_count,
+        const UINT *entries) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamPixelAspectRatio(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const DXGI_RATIONAL *src_aspect_ratio,
+        const DXGI_RATIONAL *dst_aspect_ratio) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamLumaKey(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        float lower,
+        float upper) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamStereoFormat(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,
+        WINBOOL left_view_frame0,
+        WINBOOL base_view_frame0,
+        D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,
+        int mono_offset) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamAutoProcessingMode(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamFilter(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_FILTER filter,
+        WINBOOL enable,
+        int level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE VideoProcessorSetStreamExtension(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const GUID *guid,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamFrameFormat(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_FRAME_FORMAT *format) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamColorSpace(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamOutputRate(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,
+        WINBOOL *repeat,
+        DXGI_RATIONAL *custom_rate) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamSourceRect(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamDestRect(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        RECT *rect) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamAlpha(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        float *alpha) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamPalette(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        UINT entry_count,
+        UINT *entries) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamPixelAspectRatio(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        DXGI_RATIONAL *src_aspect_ratio,
+        DXGI_RATIONAL *dst_aspect_ratio) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamLumaKey(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        float *lower,
+        float *upper) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamStereoFormat(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,
+        WINBOOL *left_view_frame0,
+        WINBOOL *base_view_frame0,
+        D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,
+        int *mono_offset) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamAutoProcessingMode(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamFilter(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_FILTER filter,
+        WINBOOL *enabled,
+        int *level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE VideoProcessorGetStreamExtension(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const GUID *guid,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE VideoProcessorBlt(
+        ID3D11VideoProcessor *processor,
+        ID3D11VideoProcessorOutputView *view,
+        UINT frame_idx,
+        UINT stream_count,
+        const D3D11_VIDEO_PROCESSOR_STREAM *streams) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NegotiateCryptoSessionKeyExchange(
+        ID3D11CryptoSession *session,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual void STDMETHODCALLTYPE EncryptionBlt(
+        ID3D11CryptoSession *session,
+        ID3D11Texture2D *src_surface,
+        ID3D11Texture2D *dst_surface,
+        UINT iv_size,
+        void *iv) = 0;
+
+    virtual void STDMETHODCALLTYPE DecryptionBlt(
+        ID3D11CryptoSession *session,
+        ID3D11Texture2D *src_surface,
+        ID3D11Texture2D *dst_surface,
+        D3D11_ENCRYPTED_BLOCK_INFO *block_info,
+        UINT key_size,
+        const void *key,
+        UINT iv_size,
+        void *iv) = 0;
+
+    virtual void STDMETHODCALLTYPE StartSessionKeyRefresh(
+        ID3D11CryptoSession *session,
+        UINT random_number_size,
+        void *random_number) = 0;
+
+    virtual void STDMETHODCALLTYPE FinishSessionKeyRefresh(
+        ID3D11CryptoSession *session) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEncryptionBltKey(
+        ID3D11CryptoSession *session,
+        UINT key_size,
+        void *key) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NegotiateAuthenticatedChannelKeyExchange(
+        ID3D11AuthenticatedChannel *channel,
+        UINT data_size,
+        void *data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryAuthenticatedChannel(
+        ID3D11AuthenticatedChannel *channel,
+        UINT input_size,
+        const void *input,
+        UINT output_size,
+        void *output) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ConfigureAuthenticatedChannel(
+        ID3D11AuthenticatedChannel *channel,
+        UINT input_size,
+        const void *input,
+        D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorSetStreamRotation(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        D3D11_VIDEO_PROCESSOR_ROTATION rotation) = 0;
+
+    virtual void STDMETHODCALLTYPE VideoProcessorGetStreamRotation(
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enable,
+        D3D11_VIDEO_PROCESSOR_ROTATION *rotation) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11VideoContext, 0x61f21c45, 0x3c0e, 0x4a74, 0x9c,0xea, 0x67,0x10,0x0d,0x9a,0xd5,0xe4)
+#endif
+#else
+typedef struct ID3D11VideoContextVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11VideoContext* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11VideoContext* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11VideoContext* This);
+
+    /*** ID3D11DeviceChild methods ***/
+    void (STDMETHODCALLTYPE *GetDevice)(
+        ID3D11VideoContext* This,
+        ID3D11Device **ppDevice);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        ID3D11VideoContext* This,
+        REFGUID guid,
+        UINT *pDataSize,
+        void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        ID3D11VideoContext* This,
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        ID3D11VideoContext* This,
+        REFGUID guid,
+        const IUnknown *pData);
+
+    /*** ID3D11VideoContext methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDecoderBuffer)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder,
+        D3D11_VIDEO_DECODER_BUFFER_TYPE type,
+        UINT *buffer_size,
+        void **buffer);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseDecoderBuffer)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder,
+        D3D11_VIDEO_DECODER_BUFFER_TYPE type);
+
+    HRESULT (STDMETHODCALLTYPE *DecoderBeginFrame)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder,
+        ID3D11VideoDecoderOutputView *view,
+        UINT key_size,
+        const void *key);
+
+    HRESULT (STDMETHODCALLTYPE *DecoderEndFrame)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder);
+
+    HRESULT (STDMETHODCALLTYPE *SubmitDecoderBuffers)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder,
+        UINT buffers_count,
+        const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc);
+
+    HRESULT (STDMETHODCALLTYPE *DecoderExtension)(
+        ID3D11VideoContext* This,
+        ID3D11VideoDecoder *decoder,
+        const D3D11_VIDEO_DECODER_EXTENSION *extension);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputTargetRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable,
+        const RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputBackgroundColor)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL y_cb_cr,
+        const D3D11_VIDEO_COLOR *color);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputColorSpace)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputAlphaFillMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,
+        UINT stream_idx);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputConstriction)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable,
+        SIZE size);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetOutputStereoMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL enable);
+
+    HRESULT (STDMETHODCALLTYPE *VideoProcessorSetOutputExtension)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        const GUID *guid,
+        UINT data_size,
+        void *data);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputTargetRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled,
+        RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputBackgroundColor)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL *y_cb_cr,
+        D3D11_VIDEO_COLOR *color);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputColorSpace)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputAlphaFillMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,
+        UINT *stream_idx);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputConstriction)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled,
+        SIZE *size);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetOutputStereoMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        WINBOOL *enabled);
+
+    HRESULT (STDMETHODCALLTYPE *VideoProcessorGetOutputExtension)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        const GUID *guid,
+        UINT data_size,
+        void *data);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamFrameFormat)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_FRAME_FORMAT format);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamColorSpace)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamOutputRate)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,
+        WINBOOL repeat,
+        const DXGI_RATIONAL *custom_rate);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamSourceRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamDestRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamAlpha)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        float alpha);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamPalette)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        UINT entry_count,
+        const UINT *entries);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamPixelAspectRatio)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        const DXGI_RATIONAL *src_aspect_ratio,
+        const DXGI_RATIONAL *dst_aspect_ratio);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamLumaKey)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        float lower,
+        float upper);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamStereoFormat)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,
+        WINBOOL left_view_frame0,
+        WINBOOL base_view_frame0,
+        D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,
+        int mono_offset);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamAutoProcessingMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamFilter)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_FILTER filter,
+        WINBOOL enable,
+        int level);
+
+    HRESULT (STDMETHODCALLTYPE *VideoProcessorSetStreamExtension)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const GUID *guid,
+        UINT data_size,
+        void *data);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamFrameFormat)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_FRAME_FORMAT *format);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamColorSpace)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamOutputRate)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,
+        WINBOOL *repeat,
+        DXGI_RATIONAL *custom_rate);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamSourceRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamDestRect)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        RECT *rect);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamAlpha)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        float *alpha);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamPalette)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        UINT entry_count,
+        UINT *entries);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamPixelAspectRatio)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        DXGI_RATIONAL *src_aspect_ratio,
+        DXGI_RATIONAL *dst_aspect_ratio);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamLumaKey)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        float *lower,
+        float *upper);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamStereoFormat)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled,
+        D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,
+        WINBOOL *left_view_frame0,
+        WINBOOL *base_view_frame0,
+        D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,
+        int *mono_offset);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamAutoProcessingMode)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enabled);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamFilter)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        D3D11_VIDEO_PROCESSOR_FILTER filter,
+        WINBOOL *enabled,
+        int *level);
+
+    HRESULT (STDMETHODCALLTYPE *VideoProcessorGetStreamExtension)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        const GUID *guid,
+        UINT data_size,
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *VideoProcessorBlt)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        ID3D11VideoProcessorOutputView *view,
+        UINT frame_idx,
+        UINT stream_count,
+        const D3D11_VIDEO_PROCESSOR_STREAM *streams);
+
+    HRESULT (STDMETHODCALLTYPE *NegotiateCryptoSessionKeyExchange)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session,
+        UINT data_size,
+        void *data);
+
+    void (STDMETHODCALLTYPE *EncryptionBlt)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session,
+        ID3D11Texture2D *src_surface,
+        ID3D11Texture2D *dst_surface,
+        UINT iv_size,
+        void *iv);
+
+    void (STDMETHODCALLTYPE *DecryptionBlt)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session,
+        ID3D11Texture2D *src_surface,
+        ID3D11Texture2D *dst_surface,
+        D3D11_ENCRYPTED_BLOCK_INFO *block_info,
+        UINT key_size,
+        const void *key,
+        UINT iv_size,
+        void *iv);
+
+    void (STDMETHODCALLTYPE *StartSessionKeyRefresh)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session,
+        UINT random_number_size,
+        void *random_number);
+
+    void (STDMETHODCALLTYPE *FinishSessionKeyRefresh)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session);
+
+    HRESULT (STDMETHODCALLTYPE *GetEncryptionBltKey)(
+        ID3D11VideoContext* This,
+        ID3D11CryptoSession *session,
+        UINT key_size,
+        void *key);
+
+    HRESULT (STDMETHODCALLTYPE *NegotiateAuthenticatedChannelKeyExchange)(
+        ID3D11VideoContext* This,
+        ID3D11AuthenticatedChannel *channel,
+        UINT data_size,
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *QueryAuthenticatedChannel)(
+        ID3D11VideoContext* This,
+        ID3D11AuthenticatedChannel *channel,
+        UINT input_size,
+        const void *input,
+        UINT output_size,
+        void *output);
+
+    HRESULT (STDMETHODCALLTYPE *ConfigureAuthenticatedChannel)(
+        ID3D11VideoContext* This,
+        ID3D11AuthenticatedChannel *channel,
+        UINT input_size,
+        const void *input,
+        D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output);
+
+    void (STDMETHODCALLTYPE *VideoProcessorSetStreamRotation)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL enable,
+        D3D11_VIDEO_PROCESSOR_ROTATION rotation);
+
+    void (STDMETHODCALLTYPE *VideoProcessorGetStreamRotation)(
+        ID3D11VideoContext* This,
+        ID3D11VideoProcessor *processor,
+        UINT stream_idx,
+        WINBOOL *enable,
+        D3D11_VIDEO_PROCESSOR_ROTATION *rotation);
+
+    END_INTERFACE
+} ID3D11VideoContextVtbl;
+interface ID3D11VideoContext {
+    CONST_VTBL ID3D11VideoContextVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11VideoContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11VideoContext_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11VideoContext_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11DeviceChild methods ***/
+#define ID3D11VideoContext_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
+#define ID3D11VideoContext_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
+#define ID3D11VideoContext_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
+#define ID3D11VideoContext_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
+/*** ID3D11VideoContext methods ***/
+#define ID3D11VideoContext_GetDecoderBuffer(This,decoder,type,buffer_size,buffer) (This)->lpVtbl->GetDecoderBuffer(This,decoder,type,buffer_size,buffer)
+#define ID3D11VideoContext_ReleaseDecoderBuffer(This,decoder,type) (This)->lpVtbl->ReleaseDecoderBuffer(This,decoder,type)
+#define ID3D11VideoContext_DecoderBeginFrame(This,decoder,view,key_size,key) (This)->lpVtbl->DecoderBeginFrame(This,decoder,view,key_size,key)
+#define ID3D11VideoContext_DecoderEndFrame(This,decoder) (This)->lpVtbl->DecoderEndFrame(This,decoder)
+#define ID3D11VideoContext_SubmitDecoderBuffers(This,decoder,buffers_count,buffer_desc) (This)->lpVtbl->SubmitDecoderBuffers(This,decoder,buffers_count,buffer_desc)
+#define ID3D11VideoContext_DecoderExtension(This,decoder,extension) (This)->lpVtbl->DecoderExtension(This,decoder,extension)
+#define ID3D11VideoContext_VideoProcessorSetOutputTargetRect(This,processor,enable,rect) (This)->lpVtbl->VideoProcessorSetOutputTargetRect(This,processor,enable,rect)
+#define ID3D11VideoContext_VideoProcessorSetOutputBackgroundColor(This,processor,y_cb_cr,color) (This)->lpVtbl->VideoProcessorSetOutputBackgroundColor(This,processor,y_cb_cr,color)
+#define ID3D11VideoContext_VideoProcessorSetOutputColorSpace(This,processor,color_space) (This)->lpVtbl->VideoProcessorSetOutputColorSpace(This,processor,color_space)
+#define ID3D11VideoContext_VideoProcessorSetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx) (This)->lpVtbl->VideoProcessorSetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx)
+#define ID3D11VideoContext_VideoProcessorSetOutputConstriction(This,processor,enable,size) (This)->lpVtbl->VideoProcessorSetOutputConstriction(This,processor,enable,size)
+#define ID3D11VideoContext_VideoProcessorSetOutputStereoMode(This,processor,enable) (This)->lpVtbl->VideoProcessorSetOutputStereoMode(This,processor,enable)
+#define ID3D11VideoContext_VideoProcessorSetOutputExtension(This,processor,guid,data_size,data) (This)->lpVtbl->VideoProcessorSetOutputExtension(This,processor,guid,data_size,data)
+#define ID3D11VideoContext_VideoProcessorGetOutputTargetRect(This,processor,enabled,rect) (This)->lpVtbl->VideoProcessorGetOutputTargetRect(This,processor,enabled,rect)
+#define ID3D11VideoContext_VideoProcessorGetOutputBackgroundColor(This,processor,y_cb_cr,color) (This)->lpVtbl->VideoProcessorGetOutputBackgroundColor(This,processor,y_cb_cr,color)
+#define ID3D11VideoContext_VideoProcessorGetOutputColorSpace(This,processor,color_space) (This)->lpVtbl->VideoProcessorGetOutputColorSpace(This,processor,color_space)
+#define ID3D11VideoContext_VideoProcessorGetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx) (This)->lpVtbl->VideoProcessorGetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx)
+#define ID3D11VideoContext_VideoProcessorGetOutputConstriction(This,processor,enabled,size) (This)->lpVtbl->VideoProcessorGetOutputConstriction(This,processor,enabled,size)
+#define ID3D11VideoContext_VideoProcessorGetOutputStereoMode(This,processor,enabled) (This)->lpVtbl->VideoProcessorGetOutputStereoMode(This,processor,enabled)
+#define ID3D11VideoContext_VideoProcessorGetOutputExtension(This,processor,guid,data_size,data) (This)->lpVtbl->VideoProcessorGetOutputExtension(This,processor,guid,data_size,data)
+#define ID3D11VideoContext_VideoProcessorSetStreamFrameFormat(This,processor,stream_idx,format) (This)->lpVtbl->VideoProcessorSetStreamFrameFormat(This,processor,stream_idx,format)
+#define ID3D11VideoContext_VideoProcessorSetStreamColorSpace(This,processor,stream_idx,color_space) (This)->lpVtbl->VideoProcessorSetStreamColorSpace(This,processor,stream_idx,color_space)
+#define ID3D11VideoContext_VideoProcessorSetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate) (This)->lpVtbl->VideoProcessorSetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate)
+#define ID3D11VideoContext_VideoProcessorSetStreamSourceRect(This,processor,stream_idx,enable,rect) (This)->lpVtbl->VideoProcessorSetStreamSourceRect(This,processor,stream_idx,enable,rect)
+#define ID3D11VideoContext_VideoProcessorSetStreamDestRect(This,processor,stream_idx,enable,rect) (This)->lpVtbl->VideoProcessorSetStreamDestRect(This,processor,stream_idx,enable,rect)
+#define ID3D11VideoContext_VideoProcessorSetStreamAlpha(This,processor,stream_idx,enable,alpha) (This)->lpVtbl->VideoProcessorSetStreamAlpha(This,processor,stream_idx,enable,alpha)
+#define ID3D11VideoContext_VideoProcessorSetStreamPalette(This,processor,stream_idx,entry_count,entries) (This)->lpVtbl->VideoProcessorSetStreamPalette(This,processor,stream_idx,entry_count,entries)
+#define ID3D11VideoContext_VideoProcessorSetStreamPixelAspectRatio(This,processor,stream_idx,enable,src_aspect_ratio,dst_aspect_ratio) (This)->lpVtbl->VideoProcessorSetStreamPixelAspectRatio(This,processor,stream_idx,enable,src_aspect_ratio,dst_aspect_ratio)
+#define ID3D11VideoContext_VideoProcessorSetStreamLumaKey(This,processor,stream_idx,enable,lower,upper) (This)->lpVtbl->VideoProcessorSetStreamLumaKey(This,processor,stream_idx,enable,lower,upper)
+#define ID3D11VideoContext_VideoProcessorSetStreamStereoFormat(This,processor,stream_idx,enable,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset) (This)->lpVtbl->VideoProcessorSetStreamStereoFormat(This,processor,stream_idx,enable,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset)
+#define ID3D11VideoContext_VideoProcessorSetStreamAutoProcessingMode(This,processor,stream_idx,enable) (This)->lpVtbl->VideoProcessorSetStreamAutoProcessingMode(This,processor,stream_idx,enable)
+#define ID3D11VideoContext_VideoProcessorSetStreamFilter(This,processor,stream_idx,filter,enable,level) (This)->lpVtbl->VideoProcessorSetStreamFilter(This,processor,stream_idx,filter,enable,level)
+#define ID3D11VideoContext_VideoProcessorSetStreamExtension(This,processor,stream_idx,guid,data_size,data) (This)->lpVtbl->VideoProcessorSetStreamExtension(This,processor,stream_idx,guid,data_size,data)
+#define ID3D11VideoContext_VideoProcessorGetStreamFrameFormat(This,processor,stream_idx,format) (This)->lpVtbl->VideoProcessorGetStreamFrameFormat(This,processor,stream_idx,format)
+#define ID3D11VideoContext_VideoProcessorGetStreamColorSpace(This,processor,stream_idx,color_space) (This)->lpVtbl->VideoProcessorGetStreamColorSpace(This,processor,stream_idx,color_space)
+#define ID3D11VideoContext_VideoProcessorGetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate) (This)->lpVtbl->VideoProcessorGetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate)
+#define ID3D11VideoContext_VideoProcessorGetStreamSourceRect(This,processor,stream_idx,enabled,rect) (This)->lpVtbl->VideoProcessorGetStreamSourceRect(This,processor,stream_idx,enabled,rect)
+#define ID3D11VideoContext_VideoProcessorGetStreamDestRect(This,processor,stream_idx,enabled,rect) (This)->lpVtbl->VideoProcessorGetStreamDestRect(This,processor,stream_idx,enabled,rect)
+#define ID3D11VideoContext_VideoProcessorGetStreamAlpha(This,processor,stream_idx,enabled,alpha) (This)->lpVtbl->VideoProcessorGetStreamAlpha(This,processor,stream_idx,enabled,alpha)
+#define ID3D11VideoContext_VideoProcessorGetStreamPalette(This,processor,stream_idx,entry_count,entries) (This)->lpVtbl->VideoProcessorGetStreamPalette(This,processor,stream_idx,entry_count,entries)
+#define ID3D11VideoContext_VideoProcessorGetStreamPixelAspectRatio(This,processor,stream_idx,enabled,src_aspect_ratio,dst_aspect_ratio) (This)->lpVtbl->VideoProcessorGetStreamPixelAspectRatio(This,processor,stream_idx,enabled,src_aspect_ratio,dst_aspect_ratio)
+#define ID3D11VideoContext_VideoProcessorGetStreamLumaKey(This,processor,stream_idx,enabled,lower,upper) (This)->lpVtbl->VideoProcessorGetStreamLumaKey(This,processor,stream_idx,enabled,lower,upper)
+#define ID3D11VideoContext_VideoProcessorGetStreamStereoFormat(This,processor,stream_idx,enabled,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset) (This)->lpVtbl->VideoProcessorGetStreamStereoFormat(This,processor,stream_idx,enabled,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset)
+#define ID3D11VideoContext_VideoProcessorGetStreamAutoProcessingMode(This,processor,stream_idx,enabled) (This)->lpVtbl->VideoProcessorGetStreamAutoProcessingMode(This,processor,stream_idx,enabled)
+#define ID3D11VideoContext_VideoProcessorGetStreamFilter(This,processor,stream_idx,filter,enabled,level) (This)->lpVtbl->VideoProcessorGetStreamFilter(This,processor,stream_idx,filter,enabled,level)
+#define ID3D11VideoContext_VideoProcessorGetStreamExtension(This,processor,stream_idx,guid,data_size,data) (This)->lpVtbl->VideoProcessorGetStreamExtension(This,processor,stream_idx,guid,data_size,data)
+#define ID3D11VideoContext_VideoProcessorBlt(This,processor,view,frame_idx,stream_count,streams) (This)->lpVtbl->VideoProcessorBlt(This,processor,view,frame_idx,stream_count,streams)
+#define ID3D11VideoContext_NegotiateCryptoSessionKeyExchange(This,session,data_size,data) (This)->lpVtbl->NegotiateCryptoSessionKeyExchange(This,session,data_size,data)
+#define ID3D11VideoContext_EncryptionBlt(This,session,src_surface,dst_surface,iv_size,iv) (This)->lpVtbl->EncryptionBlt(This,session,src_surface,dst_surface,iv_size,iv)
+#define ID3D11VideoContext_DecryptionBlt(This,session,src_surface,dst_surface,block_info,key_size,key,iv_size,iv) (This)->lpVtbl->DecryptionBlt(This,session,src_surface,dst_surface,block_info,key_size,key,iv_size,iv)
+#define ID3D11VideoContext_StartSessionKeyRefresh(This,session,random_number_size,random_number) (This)->lpVtbl->StartSessionKeyRefresh(This,session,random_number_size,random_number)
+#define ID3D11VideoContext_FinishSessionKeyRefresh(This,session) (This)->lpVtbl->FinishSessionKeyRefresh(This,session)
+#define ID3D11VideoContext_GetEncryptionBltKey(This,session,key_size,key) (This)->lpVtbl->GetEncryptionBltKey(This,session,key_size,key)
+#define ID3D11VideoContext_NegotiateAuthenticatedChannelKeyExchange(This,channel,data_size,data) (This)->lpVtbl->NegotiateAuthenticatedChannelKeyExchange(This,channel,data_size,data)
+#define ID3D11VideoContext_QueryAuthenticatedChannel(This,channel,input_size,input,output_size,output) (This)->lpVtbl->QueryAuthenticatedChannel(This,channel,input_size,input,output_size,output)
+#define ID3D11VideoContext_ConfigureAuthenticatedChannel(This,channel,input_size,input,output) (This)->lpVtbl->ConfigureAuthenticatedChannel(This,channel,input_size,input,output)
+#define ID3D11VideoContext_VideoProcessorSetStreamRotation(This,processor,stream_idx,enable,rotation) (This)->lpVtbl->VideoProcessorSetStreamRotation(This,processor,stream_idx,enable,rotation)
+#define ID3D11VideoContext_VideoProcessorGetStreamRotation(This,processor,stream_idx,enable,rotation) (This)->lpVtbl->VideoProcessorGetStreamRotation(This,processor,stream_idx,enable,rotation)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11VideoContext_QueryInterface(ID3D11VideoContext* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11VideoContext_AddRef(ID3D11VideoContext* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11VideoContext_Release(ID3D11VideoContext* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11DeviceChild methods ***/
+static FORCEINLINE void ID3D11VideoContext_GetDevice(ID3D11VideoContext* This,ID3D11Device **ppDevice) {
+    This->lpVtbl->GetDevice(This,ppDevice);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_GetPrivateData(ID3D11VideoContext* This,REFGUID guid,UINT *pDataSize,void *pData) {
+    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_SetPrivateData(ID3D11VideoContext* This,REFGUID guid,UINT DataSize,const void *pData) {
+    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_SetPrivateDataInterface(ID3D11VideoContext* This,REFGUID guid,const IUnknown *pData) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
+}
+/*** ID3D11VideoContext methods ***/
+static FORCEINLINE HRESULT ID3D11VideoContext_GetDecoderBuffer(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder,D3D11_VIDEO_DECODER_BUFFER_TYPE type,UINT *buffer_size,void **buffer) {
+    return This->lpVtbl->GetDecoderBuffer(This,decoder,type,buffer_size,buffer);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_ReleaseDecoderBuffer(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder,D3D11_VIDEO_DECODER_BUFFER_TYPE type) {
+    return This->lpVtbl->ReleaseDecoderBuffer(This,decoder,type);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_DecoderBeginFrame(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder,ID3D11VideoDecoderOutputView *view,UINT key_size,const void *key) {
+    return This->lpVtbl->DecoderBeginFrame(This,decoder,view,key_size,key);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_DecoderEndFrame(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder) {
+    return This->lpVtbl->DecoderEndFrame(This,decoder);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_SubmitDecoderBuffers(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder,UINT buffers_count,const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc) {
+    return This->lpVtbl->SubmitDecoderBuffers(This,decoder,buffers_count,buffer_desc);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_DecoderExtension(ID3D11VideoContext* This,ID3D11VideoDecoder *decoder,const D3D11_VIDEO_DECODER_EXTENSION *extension) {
+    return This->lpVtbl->DecoderExtension(This,decoder,extension);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputTargetRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL enable,const RECT *rect) {
+    This->lpVtbl->VideoProcessorSetOutputTargetRect(This,processor,enable,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputBackgroundColor(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL y_cb_cr,const D3D11_VIDEO_COLOR *color) {
+    This->lpVtbl->VideoProcessorSetOutputBackgroundColor(This,processor,y_cb_cr,color);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputColorSpace(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) {
+    This->lpVtbl->VideoProcessorSetOutputColorSpace(This,processor,color_space);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputAlphaFillMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,UINT stream_idx) {
+    This->lpVtbl->VideoProcessorSetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputConstriction(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL enable,SIZE size) {
+    This->lpVtbl->VideoProcessorSetOutputConstriction(This,processor,enable,size);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetOutputStereoMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL enable) {
+    This->lpVtbl->VideoProcessorSetOutputStereoMode(This,processor,enable);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_VideoProcessorSetOutputExtension(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,const GUID *guid,UINT data_size,void *data) {
+    return This->lpVtbl->VideoProcessorSetOutputExtension(This,processor,guid,data_size,data);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputTargetRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL *enabled,RECT *rect) {
+    This->lpVtbl->VideoProcessorGetOutputTargetRect(This,processor,enabled,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputBackgroundColor(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL *y_cb_cr,D3D11_VIDEO_COLOR *color) {
+    This->lpVtbl->VideoProcessorGetOutputBackgroundColor(This,processor,y_cb_cr,color);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputColorSpace(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) {
+    This->lpVtbl->VideoProcessorGetOutputColorSpace(This,processor,color_space);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputAlphaFillMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,UINT *stream_idx) {
+    This->lpVtbl->VideoProcessorGetOutputAlphaFillMode(This,processor,alpha_fill_mode,stream_idx);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputConstriction(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL *enabled,SIZE *size) {
+    This->lpVtbl->VideoProcessorGetOutputConstriction(This,processor,enabled,size);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetOutputStereoMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,WINBOOL *enabled) {
+    This->lpVtbl->VideoProcessorGetOutputStereoMode(This,processor,enabled);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_VideoProcessorGetOutputExtension(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,const GUID *guid,UINT data_size,void *data) {
+    return This->lpVtbl->VideoProcessorGetOutputExtension(This,processor,guid,data_size,data);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamFrameFormat(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_FRAME_FORMAT format) {
+    This->lpVtbl->VideoProcessorSetStreamFrameFormat(This,processor,stream_idx,format);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamColorSpace(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) {
+    This->lpVtbl->VideoProcessorSetStreamColorSpace(This,processor,stream_idx,color_space);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamOutputRate(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,WINBOOL repeat,const DXGI_RATIONAL *custom_rate) {
+    This->lpVtbl->VideoProcessorSetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamSourceRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,const RECT *rect) {
+    This->lpVtbl->VideoProcessorSetStreamSourceRect(This,processor,stream_idx,enable,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamDestRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,const RECT *rect) {
+    This->lpVtbl->VideoProcessorSetStreamDestRect(This,processor,stream_idx,enable,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamAlpha(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,float alpha) {
+    This->lpVtbl->VideoProcessorSetStreamAlpha(This,processor,stream_idx,enable,alpha);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamPalette(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,UINT entry_count,const UINT *entries) {
+    This->lpVtbl->VideoProcessorSetStreamPalette(This,processor,stream_idx,entry_count,entries);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamPixelAspectRatio(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,const DXGI_RATIONAL *src_aspect_ratio,const DXGI_RATIONAL *dst_aspect_ratio) {
+    This->lpVtbl->VideoProcessorSetStreamPixelAspectRatio(This,processor,stream_idx,enable,src_aspect_ratio,dst_aspect_ratio);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamLumaKey(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,float lower,float upper) {
+    This->lpVtbl->VideoProcessorSetStreamLumaKey(This,processor,stream_idx,enable,lower,upper);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamStereoFormat(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,WINBOOL left_view_frame0,WINBOOL base_view_frame0,D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,int mono_offset) {
+    This->lpVtbl->VideoProcessorSetStreamStereoFormat(This,processor,stream_idx,enable,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamAutoProcessingMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable) {
+    This->lpVtbl->VideoProcessorSetStreamAutoProcessingMode(This,processor,stream_idx,enable);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamFilter(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_PROCESSOR_FILTER filter,WINBOOL enable,int level) {
+    This->lpVtbl->VideoProcessorSetStreamFilter(This,processor,stream_idx,filter,enable,level);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_VideoProcessorSetStreamExtension(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,const GUID *guid,UINT data_size,void *data) {
+    return This->lpVtbl->VideoProcessorSetStreamExtension(This,processor,stream_idx,guid,data_size,data);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamFrameFormat(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_FRAME_FORMAT *format) {
+    This->lpVtbl->VideoProcessorGetStreamFrameFormat(This,processor,stream_idx,format);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamColorSpace(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space) {
+    This->lpVtbl->VideoProcessorGetStreamColorSpace(This,processor,stream_idx,color_space);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamOutputRate(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,WINBOOL *repeat,DXGI_RATIONAL *custom_rate) {
+    This->lpVtbl->VideoProcessorGetStreamOutputRate(This,processor,stream_idx,rate,repeat,custom_rate);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamSourceRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,RECT *rect) {
+    This->lpVtbl->VideoProcessorGetStreamSourceRect(This,processor,stream_idx,enabled,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamDestRect(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,RECT *rect) {
+    This->lpVtbl->VideoProcessorGetStreamDestRect(This,processor,stream_idx,enabled,rect);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamAlpha(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,float *alpha) {
+    This->lpVtbl->VideoProcessorGetStreamAlpha(This,processor,stream_idx,enabled,alpha);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamPalette(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,UINT entry_count,UINT *entries) {
+    This->lpVtbl->VideoProcessorGetStreamPalette(This,processor,stream_idx,entry_count,entries);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamPixelAspectRatio(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,DXGI_RATIONAL *src_aspect_ratio,DXGI_RATIONAL *dst_aspect_ratio) {
+    This->lpVtbl->VideoProcessorGetStreamPixelAspectRatio(This,processor,stream_idx,enabled,src_aspect_ratio,dst_aspect_ratio);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamLumaKey(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,float *lower,float *upper) {
+    This->lpVtbl->VideoProcessorGetStreamLumaKey(This,processor,stream_idx,enabled,lower,upper);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamStereoFormat(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled,D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,WINBOOL *left_view_frame0,WINBOOL *base_view_frame0,D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,int *mono_offset) {
+    This->lpVtbl->VideoProcessorGetStreamStereoFormat(This,processor,stream_idx,enabled,format,left_view_frame0,base_view_frame0,flip_mode,mono_offset);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamAutoProcessingMode(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enabled) {
+    This->lpVtbl->VideoProcessorGetStreamAutoProcessingMode(This,processor,stream_idx,enabled);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamFilter(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,D3D11_VIDEO_PROCESSOR_FILTER filter,WINBOOL *enabled,int *level) {
+    This->lpVtbl->VideoProcessorGetStreamFilter(This,processor,stream_idx,filter,enabled,level);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_VideoProcessorGetStreamExtension(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,const GUID *guid,UINT data_size,void *data) {
+    return This->lpVtbl->VideoProcessorGetStreamExtension(This,processor,stream_idx,guid,data_size,data);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_VideoProcessorBlt(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,ID3D11VideoProcessorOutputView *view,UINT frame_idx,UINT stream_count,const D3D11_VIDEO_PROCESSOR_STREAM *streams) {
+    return This->lpVtbl->VideoProcessorBlt(This,processor,view,frame_idx,stream_count,streams);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_NegotiateCryptoSessionKeyExchange(ID3D11VideoContext* This,ID3D11CryptoSession *session,UINT data_size,void *data) {
+    return This->lpVtbl->NegotiateCryptoSessionKeyExchange(This,session,data_size,data);
+}
+static FORCEINLINE void ID3D11VideoContext_EncryptionBlt(ID3D11VideoContext* This,ID3D11CryptoSession *session,ID3D11Texture2D *src_surface,ID3D11Texture2D *dst_surface,UINT iv_size,void *iv) {
+    This->lpVtbl->EncryptionBlt(This,session,src_surface,dst_surface,iv_size,iv);
+}
+static FORCEINLINE void ID3D11VideoContext_DecryptionBlt(ID3D11VideoContext* This,ID3D11CryptoSession *session,ID3D11Texture2D *src_surface,ID3D11Texture2D *dst_surface,D3D11_ENCRYPTED_BLOCK_INFO *block_info,UINT key_size,const void *key,UINT iv_size,void *iv) {
+    This->lpVtbl->DecryptionBlt(This,session,src_surface,dst_surface,block_info,key_size,key,iv_size,iv);
+}
+static FORCEINLINE void ID3D11VideoContext_StartSessionKeyRefresh(ID3D11VideoContext* This,ID3D11CryptoSession *session,UINT random_number_size,void *random_number) {
+    This->lpVtbl->StartSessionKeyRefresh(This,session,random_number_size,random_number);
+}
+static FORCEINLINE void ID3D11VideoContext_FinishSessionKeyRefresh(ID3D11VideoContext* This,ID3D11CryptoSession *session) {
+    This->lpVtbl->FinishSessionKeyRefresh(This,session);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_GetEncryptionBltKey(ID3D11VideoContext* This,ID3D11CryptoSession *session,UINT key_size,void *key) {
+    return This->lpVtbl->GetEncryptionBltKey(This,session,key_size,key);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_NegotiateAuthenticatedChannelKeyExchange(ID3D11VideoContext* This,ID3D11AuthenticatedChannel *channel,UINT data_size,void *data) {
+    return This->lpVtbl->NegotiateAuthenticatedChannelKeyExchange(This,channel,data_size,data);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_QueryAuthenticatedChannel(ID3D11VideoContext* This,ID3D11AuthenticatedChannel *channel,UINT input_size,const void *input,UINT output_size,void *output) {
+    return This->lpVtbl->QueryAuthenticatedChannel(This,channel,input_size,input,output_size,output);
+}
+static FORCEINLINE HRESULT ID3D11VideoContext_ConfigureAuthenticatedChannel(ID3D11VideoContext* This,ID3D11AuthenticatedChannel *channel,UINT input_size,const void *input,D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output) {
+    return This->lpVtbl->ConfigureAuthenticatedChannel(This,channel,input_size,input,output);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorSetStreamRotation(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL enable,D3D11_VIDEO_PROCESSOR_ROTATION rotation) {
+    This->lpVtbl->VideoProcessorSetStreamRotation(This,processor,stream_idx,enable,rotation);
+}
+static FORCEINLINE void ID3D11VideoContext_VideoProcessorGetStreamRotation(ID3D11VideoContext* This,ID3D11VideoProcessor *processor,UINT stream_idx,WINBOOL *enable,D3D11_VIDEO_PROCESSOR_ROTATION *rotation) {
+    This->lpVtbl->VideoProcessorGetStreamRotation(This,processor,stream_idx,enable,rotation);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_GetDecoderBuffer_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder,
+    D3D11_VIDEO_DECODER_BUFFER_TYPE type,
+    UINT *buffer_size,
+    void **buffer);
+void __RPC_STUB ID3D11VideoContext_GetDecoderBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_ReleaseDecoderBuffer_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder,
+    D3D11_VIDEO_DECODER_BUFFER_TYPE type);
+void __RPC_STUB ID3D11VideoContext_ReleaseDecoderBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_DecoderBeginFrame_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder,
+    ID3D11VideoDecoderOutputView *view,
+    UINT key_size,
+    const void *key);
+void __RPC_STUB ID3D11VideoContext_DecoderBeginFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_DecoderEndFrame_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder);
+void __RPC_STUB ID3D11VideoContext_DecoderEndFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_SubmitDecoderBuffers_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder,
+    UINT buffers_count,
+    const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc);
+void __RPC_STUB ID3D11VideoContext_SubmitDecoderBuffers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_DecoderExtension_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoDecoder *decoder,
+    const D3D11_VIDEO_DECODER_EXTENSION *extension);
+void __RPC_STUB ID3D11VideoContext_DecoderExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputTargetRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL enable,
+    const RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputTargetRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputBackgroundColor_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL y_cb_cr,
+    const D3D11_VIDEO_COLOR *color);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputBackgroundColor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputColorSpace_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputColorSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputAlphaFillMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,
+    UINT stream_idx);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputAlphaFillMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputConstriction_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL enable,
+    SIZE size);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputConstriction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputStereoMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL enable);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputStereoMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetOutputExtension_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    const GUID *guid,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetOutputExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputTargetRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL *enabled,
+    RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputTargetRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputBackgroundColor_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL *y_cb_cr,
+    D3D11_VIDEO_COLOR *color);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputBackgroundColor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputColorSpace_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputColorSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputAlphaFillMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,
+    UINT *stream_idx);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputAlphaFillMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputConstriction_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL *enabled,
+    SIZE *size);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputConstriction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputStereoMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    WINBOOL *enabled);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputStereoMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetOutputExtension_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    const GUID *guid,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetOutputExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamFrameFormat_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_FRAME_FORMAT format);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamFrameFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamColorSpace_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamColorSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamOutputRate_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,
+    WINBOOL repeat,
+    const DXGI_RATIONAL *custom_rate);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamOutputRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamSourceRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    const RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamSourceRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamDestRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    const RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamDestRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamAlpha_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    float alpha);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamAlpha_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamPalette_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    UINT entry_count,
+    const UINT *entries);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamPixelAspectRatio_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    const DXGI_RATIONAL *src_aspect_ratio,
+    const DXGI_RATIONAL *dst_aspect_ratio);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamPixelAspectRatio_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamLumaKey_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    float lower,
+    float upper);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamLumaKey_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamStereoFormat_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,
+    WINBOOL left_view_frame0,
+    WINBOOL base_view_frame0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,
+    int mono_offset);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamStereoFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamAutoProcessingMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamAutoProcessingMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamFilter_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_PROCESSOR_FILTER filter,
+    WINBOOL enable,
+    int level);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamExtension_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    const GUID *guid,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamFrameFormat_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_FRAME_FORMAT *format);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamFrameFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamColorSpace_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamColorSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamOutputRate_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,
+    WINBOOL *repeat,
+    DXGI_RATIONAL *custom_rate);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamOutputRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamSourceRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamSourceRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamDestRect_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    RECT *rect);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamDestRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamAlpha_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    float *alpha);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamAlpha_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamPalette_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    UINT entry_count,
+    UINT *entries);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamPixelAspectRatio_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    DXGI_RATIONAL *src_aspect_ratio,
+    DXGI_RATIONAL *dst_aspect_ratio);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamPixelAspectRatio_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamLumaKey_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    float *lower,
+    float *upper);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamLumaKey_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamStereoFormat_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,
+    WINBOOL *left_view_frame0,
+    WINBOOL *base_view_frame0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,
+    int *mono_offset);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamStereoFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamAutoProcessingMode_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enabled);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamAutoProcessingMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamFilter_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    D3D11_VIDEO_PROCESSOR_FILTER filter,
+    WINBOOL *enabled,
+    int *level);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamExtension_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    const GUID *guid,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorBlt_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    ID3D11VideoProcessorOutputView *view,
+    UINT frame_idx,
+    UINT stream_count,
+    const D3D11_VIDEO_PROCESSOR_STREAM *streams);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorBlt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_NegotiateCryptoSessionKeyExchange_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_NegotiateCryptoSessionKeyExchange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_EncryptionBlt_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session,
+    ID3D11Texture2D *src_surface,
+    ID3D11Texture2D *dst_surface,
+    UINT iv_size,
+    void *iv);
+void __RPC_STUB ID3D11VideoContext_EncryptionBlt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_DecryptionBlt_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session,
+    ID3D11Texture2D *src_surface,
+    ID3D11Texture2D *dst_surface,
+    D3D11_ENCRYPTED_BLOCK_INFO *block_info,
+    UINT key_size,
+    const void *key,
+    UINT iv_size,
+    void *iv);
+void __RPC_STUB ID3D11VideoContext_DecryptionBlt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_StartSessionKeyRefresh_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session,
+    UINT random_number_size,
+    void *random_number);
+void __RPC_STUB ID3D11VideoContext_StartSessionKeyRefresh_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_FinishSessionKeyRefresh_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session);
+void __RPC_STUB ID3D11VideoContext_FinishSessionKeyRefresh_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_GetEncryptionBltKey_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11CryptoSession *session,
+    UINT key_size,
+    void *key);
+void __RPC_STUB ID3D11VideoContext_GetEncryptionBltKey_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_NegotiateAuthenticatedChannelKeyExchange_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11AuthenticatedChannel *channel,
+    UINT data_size,
+    void *data);
+void __RPC_STUB ID3D11VideoContext_NegotiateAuthenticatedChannelKeyExchange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_QueryAuthenticatedChannel_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11AuthenticatedChannel *channel,
+    UINT input_size,
+    const void *input,
+    UINT output_size,
+    void *output);
+void __RPC_STUB ID3D11VideoContext_QueryAuthenticatedChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11VideoContext_ConfigureAuthenticatedChannel_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11AuthenticatedChannel *channel,
+    UINT input_size,
+    const void *input,
+    D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output);
+void __RPC_STUB ID3D11VideoContext_ConfigureAuthenticatedChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorSetStreamRotation_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL enable,
+    D3D11_VIDEO_PROCESSOR_ROTATION rotation);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorSetStreamRotation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE ID3D11VideoContext_VideoProcessorGetStreamRotation_Proxy(
+    ID3D11VideoContext* This,
+    ID3D11VideoProcessor *processor,
+    UINT stream_idx,
+    WINBOOL *enable,
+    D3D11_VIDEO_PROCESSOR_ROTATION *rotation);
+void __RPC_STUB ID3D11VideoContext_VideoProcessorGetStreamRotation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11VideoContext_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ID3D11Device interface
  */
 #ifndef __ID3D11Device_INTERFACE_DEFINED__
@@ -8857,6 +12834,8 @@
 typedef HRESULT (WINAPI *PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN)(IDXGIAdapter*,D3D_DRIVER_TYPE,HMODULE,UINT,
     const D3D_FEATURE_LEVEL*,UINT,UINT,const DXGI_SWAP_CHAIN_DESC*,IDXGISwapChain**,ID3D11Device**,
     D3D_FEATURE_LEVEL*,ID3D11DeviceContext**);
+HRESULT __stdcall  D3D11CreateDeviceAndSwapChain(IDXGIAdapter *adapter,D3D_DRIVER_TYPE driver_type,HMODULE swrast,UINT flags,const D3D_FEATURE_LEVEL *feature_levels,UINT levels,UINT sdk_version,const DXGI_SWAP_CHAIN_DESC *swapchain_desc,IDXGISwapChain **swapchain,ID3D11Device **device,D3D_FEATURE_LEVEL *obtained_feature_level,ID3D11DeviceContext **immediate_context);
+
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/x86_64-w64-mingw32/include/d3d11.idl b/x86_64-w64-mingw32/include/d3d11.idl
index d5732c9..57d2ceb 100644
--- a/x86_64-w64-mingw32/include/d3d11.idl
+++ b/x86_64-w64-mingw32/include/d3d11.idl
@@ -27,6 +27,11 @@
 typedef D3D_SRV_DIMENSION D3D11_SRV_DIMENSION;
 typedef RECT D3D11_RECT;
 
+interface ID3D11Device;
+interface ID3D11ClassLinkage;
+interface ID3D11Resource;
+interface ID3D11VideoProcessorInputView;
+
 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT      = 14;
 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS          = 4;
 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
@@ -87,12 +92,17 @@
 
 cpp_quote("#define D3D11_FLOAT32_MAX         (3.402823466e+38f)")
 
+const UINT D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
+
 const unsigned int D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
 
 const UINT D3D11_MAX_MAXANISOTROPY           = 16;
 const UINT D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
 const UINT D3D11_VIEWPORT_BOUNDS_MAX         = 32767;
 const INT D3D11_VIEWPORT_BOUNDS_MIN          = -32768;
+const UINT D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
+const UINT D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
+
 const UINT D3D11_SHADER_MAJOR_VERSION        = 5;
 const UINT D3D11_SHADER_MAX_INSTANCES        = 65535;
 const UINT D3D11_SHADER_MAX_INTERFACES       = 253;
@@ -101,6 +111,8 @@
 const UINT D3D11_SHADER_MINOR_VERSION        = 0;
 const UINT D3D11_VS_OUTPUT_REGISTER_COUNT    = 32;
 
+const UINT D3D11_OMAC_SIZE = 16;
+
 const UINT D3D11_PS_CS_UAV_REGISTER_COMPONENTS         = 1;
 const UINT D3D11_PS_CS_UAV_REGISTER_COUNT              = 8;
 const UINT D3D11_PS_CS_UAV_REGISTER_READS_PER_INST     = 1;
@@ -223,6 +235,61 @@
     D3D11_BLEND_OP_MAX
 } D3D11_BLEND_OP;
 
+typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE
+{
+    D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
+    D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
+    D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
+    D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
+    D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
+    D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
+    D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
+    D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
+    D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
+} D3D11_VIDEO_DECODER_BUFFER_TYPE;
+
+typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE
+{
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
+    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
+} D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE;
+
+typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE
+{
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
+    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
+} D3D11_VIDEO_PROCESSOR_OUTPUT_RATE;
+
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT
+{
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
+    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
+} D3D11_VIDEO_PROCESSOR_STEREO_FORMAT;
+
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
+{
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
+    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
+} D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE;
+
+typedef enum D3D11_VIDEO_PROCESSOR_ROTATION
+{
+    D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
+    D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
+    D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
+    D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
+} D3D11_VIDEO_PROCESSOR_ROTATION;
+
 typedef struct D3D11_BOX
 {
     UINT left;
@@ -362,8 +429,31 @@
     D3D11_FEATURE_FORMAT_SUPPORT,
     D3D11_FEATURE_FORMAT_SUPPORT2,
     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS,
+    D3D11_FEATURE_D3D11_OPTIONS,
+    D3D11_FEATURE_ARCHITECTURE_INFO,
+    D3D11_FEATURE_D3D9_OPTIONS,
+    D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT,
+    D3D11_FEATURE_D3D9_SHADOW_SUPPORT
 } D3D11_FEATURE;
 
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS
+{
+    BOOL OutputMergerLogicOp;
+    BOOL UAVOnlyRenderingForcedSampleCount;
+    BOOL DiscardAPIsSeenByDriver;
+    BOOL FlagsForUpdateAndCopySeenByDriver;
+    BOOL ClearView;
+    BOOL CopyWithOverlap;
+    BOOL ConstantBufferPartialUpdate;
+    BOOL ConstantBufferOffsetting;
+    BOOL MapNoOverwriteOnDynamicConstantBuffer;
+    BOOL MapNoOverwriteOnDynamicBufferSRV;
+    BOOL MultisampleRTVWithForcedSampleCountOne;
+    BOOL SAD4ShaderInstructions;
+    BOOL ExtendedDoublesShaderInstructions;
+    BOOL ExtendedResourceSharing;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS;
+
 typedef enum D3D11_FILL_MODE
 {
     D3D11_FILL_WIREFRAME = 2,
@@ -505,6 +595,11 @@
     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3,
 } D3D11_QUERY;
 
+typedef enum D3D11_QUERY_MISC_FLAG
+{
+    D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
+} D3D11_QUERY_MISC_FLAG;
+
 typedef enum D3D11_ASYNC_GETDATA_FLAG
 {
     D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x0001,
@@ -921,7 +1016,11 @@
     D3D11_FORMAT_SUPPORT_SHADER_GATHER                = 0x00800000,
     D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST             = 0x01000000,
     D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW  = 0x02000000,
-    D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON     = 0x04000000
+    D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON     = 0x04000000,
+    D3D11_FORMAT_SUPPORT_DECODER_OUTPUT               = 0x08000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT       = 0x10000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT        = 0x20000000,
+    D3D11_FORMAT_SUPPORT_VIDEO_ENCODER                = 0x40000000,
 } D3D11_FORMAT_SUPPORT;
 
 typedef enum D3D11_CLEAR_FLAG
@@ -1053,6 +1152,72 @@
     };
 } D3D11_RENDER_TARGET_VIEW_DESC;
 
+cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
+cpp_quote("struct CD3D11_RENDER_TARGET_VIEW_DESC : public D3D11_RENDER_TARGET_VIEW_DESC {")
+cpp_quote("    CD3D11_RENDER_TARGET_VIEW_DESC() {}")
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(D3D11_RTV_DIMENSION dim, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
+cpp_quote("            UINT mip_slice = 0, UINT first_slice = 0, UINT array_size = -1) {")
+cpp_quote("        Format = format;")
+cpp_quote("        ViewDimension = dim;")
+cpp_quote("        switch(dim) {")
+cpp_quote("        case D3D11_RTV_DIMENSION_BUFFER:")
+cpp_quote("            Buffer.FirstElement = mip_slice;")
+cpp_quote("            Buffer.NumElements = first_slice;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE1D:")
+cpp_quote("            Texture1D.MipSlice = mip_slice;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:")
+cpp_quote("            Texture1DArray.MipSlice = mip_slice;")
+cpp_quote("            Texture1DArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture1DArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2D:")
+cpp_quote("            Texture2D.MipSlice = mip_slice;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2DARRAY:")
+cpp_quote("            Texture2DArray.MipSlice = mip_slice;")
+cpp_quote("            Texture2DArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture2DArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY:")
+cpp_quote("            Texture2DMSArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture2DMSArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE3D:")
+cpp_quote("            Texture3D.MipSlice = mip_slice;")
+cpp_quote("            Texture3D.FirstWSlice = first_slice;")
+cpp_quote("            Texture3D.WSize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        default:")
+cpp_quote("            break;")
+cpp_quote("        }")
+cpp_quote("    }")
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,")
+cpp_quote("            UINT elem_cnt) {")
+cpp_quote("        Format = format;")
+cpp_quote("        ViewDimension = D3D11_RTV_DIMENSION_BUFFER;")
+cpp_quote("        Buffer.FirstElement = first_elem;")
+cpp_quote("        Buffer.NumElements = elem_cnt;")
+cpp_quote("    }")
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture1D *texture, D3D11_RTV_DIMENSION dim,")
+cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,")
+cpp_quote("            UINT array_size = -1);") /* FIXME: implement */
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture2D *texture, D3D11_RTV_DIMENSION dim,")
+cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,")
+cpp_quote("            UINT array_size = -1);") /* FIXME: implement */
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
+cpp_quote("            UINT mip_slice = 0, UINT first_w_slice = 0, UINT w_slice = -1 );") /* FIXME: implement */
+cpp_quote("    ~CD3D11_RENDER_TARGET_VIEW_DESC() {}")
+cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(const D3D11_RENDER_TARGET_VIEW_DESC &other)")
+cpp_quote("        : D3D11_RENDER_TARGET_VIEW_DESC(other) {}")
+cpp_quote("    operator const D3D11_RENDER_TARGET_VIEW_DESC&() const {")
+cpp_quote("        return *this;")
+cpp_quote("    }")
+cpp_quote("};")
+cpp_quote("#endif")
+
+
 typedef struct D3D11_SAMPLER_DESC
 {
     D3D11_FILTER Filter;
@@ -1131,6 +1296,85 @@
     };
 } D3D11_SHADER_RESOURCE_VIEW_DESC;
 
+cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined( __cplusplus )")
+cpp_quote("struct CD3D11_SHADER_RESOURCE_VIEW_DESC : public D3D11_SHADER_RESOURCE_VIEW_DESC {")
+cpp_quote("    CD3D11_SHADER_RESOURCE_VIEW_DESC() {}")
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(D3D11_SRV_DIMENSION dim,")
+cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0,")
+cpp_quote("            UINT mip_levels = -1, UINT first_slice = 0, UINT array_size = -1, UINT flags = 0) {")
+cpp_quote("        Format = format;")
+cpp_quote("        ViewDimension = dim;")
+cpp_quote("        switch(ViewDimension) {")
+cpp_quote("        case D3D11_SRV_DIMENSION_BUFFER:")
+cpp_quote("            Buffer.FirstElement = most_detailed_mip;")
+cpp_quote("            Buffer.NumElements = mip_levels;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE1D:")
+cpp_quote("            Texture1D.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            Texture1D.MipLevels = mip_levels;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:")
+cpp_quote("            Texture1DArray.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            Texture1DArray.MipLevels = mip_levels;")
+cpp_quote("            Texture1DArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture1DArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2D:")
+cpp_quote("            Texture2D.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            Texture2D.MipLevels = mip_levels;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2DARRAY:")
+cpp_quote("            Texture2DArray.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            Texture2DArray.MipLevels = mip_levels;")
+cpp_quote("            Texture2DArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture2DArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY:")
+cpp_quote("            Texture2DMSArray.FirstArraySlice = first_slice;")
+cpp_quote("            Texture2DMSArray.ArraySize = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE3D:")
+cpp_quote("            Texture3D.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            Texture3D.MipLevels = mip_levels;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURECUBE:")
+cpp_quote("            TextureCube.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            TextureCube.MipLevels = mip_levels;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURECUBEARRAY:")
+cpp_quote("            TextureCubeArray.MostDetailedMip = most_detailed_mip;")
+cpp_quote("            TextureCubeArray.MipLevels = mip_levels;")
+cpp_quote("            TextureCubeArray.First2DArrayFace = first_slice;")
+cpp_quote("            TextureCubeArray.NumCubes = array_size;")
+cpp_quote("            break;")
+cpp_quote("        case D3D11_SRV_DIMENSION_BUFFEREX:")
+cpp_quote("            BufferEx.FirstElement = most_detailed_mip;")
+cpp_quote("            BufferEx.NumElements = mip_levels;")
+cpp_quote("            BufferEx.Flags = flags;")
+cpp_quote("            break;")
+cpp_quote("        default:")
+cpp_quote("            break;")
+cpp_quote("        }")
+cpp_quote("    }")
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,")
+cpp_quote("            UINT elem_cnt, UINT flags = 0);") /* FIXME: implement */
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture1D *texture, D3D11_SRV_DIMENSION dim,")
+cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,")
+cpp_quote("            UINT first_slice = 0, UINT array_size = -1 );") /* FIXME: implement */
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture2D *texture, D3D11_SRV_DIMENSION dim,")
+cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,")
+cpp_quote("            UINT first_slice = 0, UINT array_size = -1 );") /* FIXME: implement */
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
+cpp_quote("            UINT most_detailed_mip = 0, UINT mip_levels = -1 );")
+cpp_quote("    ~CD3D11_SHADER_RESOURCE_VIEW_DESC() {}")
+cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(const D3D11_SHADER_RESOURCE_VIEW_DESC &other)")
+cpp_quote("        : D3D11_SHADER_RESOURCE_VIEW_DESC(other) {}")
+cpp_quote("    operator const D3D11_SHADER_RESOURCE_VIEW_DESC&() const {")
+cpp_quote("        return *this;")
+cpp_quote("    }")
+cpp_quote("};")
+cpp_quote("#endif")
+
 typedef struct D3D11_TEXTURE1D_DESC
 {
     UINT Width;
@@ -1195,9 +1439,300 @@
     UINT MiscFlags;
 } D3D11_TEXTURE3D_DESC;
 
-/* A couple forward declarations are needed */
-interface ID3D11Device;
-interface ID3D11ClassLinkage;
+typedef struct D3D11_VIDEO_DECODER_DESC
+{
+    GUID Guid;
+    UINT SampleWidth;
+    UINT SampleHeight;
+    DXGI_FORMAT OutputFormat;
+} D3D11_VIDEO_DECODER_DESC;
+
+typedef struct D3D11_VIDEO_DECODER_CONFIG
+{
+    GUID guidConfigBitstreamEncryption;
+    GUID guidConfigMBcontrolEncryption;
+    GUID guidConfigResidDiffEncryption;
+    UINT ConfigBitstreamRaw;
+    UINT ConfigMBcontrolRasterOrder;
+    UINT ConfigResidDiffHost;
+    UINT ConfigSpatialResid8;
+    UINT ConfigResid8Subtraction;
+    UINT ConfigSpatialHost8or9Clipping;
+    UINT ConfigSpatialResidInterleaved;
+    UINT ConfigIntraResidUnsigned;
+    UINT ConfigResidDiffAccelerator;
+    UINT ConfigHostInverseScan;
+    UINT ConfigSpecificIDCT;
+    UINT Config4GroupedCoefs;
+    USHORT ConfigMinRenderTargetBuffCount;
+    USHORT ConfigDecoderSpecific;
+} D3D11_VIDEO_DECODER_CONFIG;
+
+typedef enum D3D11_VIDEO_FRAME_FORMAT
+{
+    D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE                   = 0,
+    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST    = 1,
+    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
+} D3D11_VIDEO_FRAME_FORMAT;
+
+typedef enum D3D11_VIDEO_USAGE
+{
+    D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
+    D3D11_VIDEO_USAGE_OPTIMAL_SPEED   = 1,
+    D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2
+} D3D11_VIDEO_USAGE;
+
+typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC
+{
+    D3D11_VIDEO_FRAME_FORMAT InputFrameFormat;
+    DXGI_RATIONAL InputFrameRate;
+    UINT InputWidth;
+    UINT InputHeight;
+    DXGI_RATIONAL OutputFrameRate;
+    UINT OutputWidth;
+    UINT OutputHeight;
+    D3D11_VIDEO_USAGE Usage;
+} D3D11_VIDEO_PROCESSOR_CONTENT_DESC;
+
+typedef struct D3D11_VIDEO_PROCESSOR_CAPS
+{
+    UINT DeviceCaps;
+    UINT FeatureCaps;
+    UINT FilterCaps;
+    UINT InputFormatCaps;
+    UINT AutoStreamCaps;
+    UINT StereoCaps;
+    UINT RateConversionCapsCount;
+    UINT MaxInputStreams;
+    UINT MaxStreamStates;
+} D3D11_VIDEO_PROCESSOR_CAPS;
+
+typedef struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
+{
+    UINT PastFrames;
+    UINT FutureFrames;
+    UINT ProcessorCaps;
+    UINT ITelecineCaps;
+    UINT CustomRateCount;
+} D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS;
+
+typedef struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE
+{
+    DXGI_RATIONAL CustomRate;
+    UINT OutputFrames;
+    BOOL InputInterlaced;
+    UINT InputFramesOrFields;
+} D3D11_VIDEO_PROCESSOR_CUSTOM_RATE;
+
+typedef enum D3D11_VIDEO_PROCESSOR_FILTER
+{
+    D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS         = 0,
+    D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST           = 1,
+    D3D11_VIDEO_PROCESSOR_FILTER_HUE                = 2,
+    D3D11_VIDEO_PROCESSOR_FILTER_SATURATION         = 3,
+    D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION    = 4,
+    D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT   = 5,
+    D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
+    D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT  = 7
+} D3D11_VIDEO_PROCESSOR_FILTER;
+
+typedef struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE
+{
+    int Minimum;
+    int Maximum;
+    int Default;
+    float Multiplier;
+} D3D11_VIDEO_PROCESSOR_FILTER_RANGE;
+
+typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE
+{
+    D3D11_AUTHENTICATED_CHANNEL_D3D11           = 1,
+    D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
+    D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3
+} D3D11_AUTHENTICATED_CHANNEL_TYPE;
+
+typedef enum D3D11_VDOV_DIMENSION
+{
+    D3D11_VDOV_DIMENSION_UNKNOWN   = 0,
+    D3D11_VDOV_DIMENSION_TEXTURE2D = 1
+} D3D11_VDOV_DIMENSION;
+
+typedef struct D3D11_TEX2D_VDOV
+{
+    UINT ArraySlice;
+} D3D11_TEX2D_VDOV;
+
+typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC
+{
+    GUID DecodeProfile;
+    D3D11_VDOV_DIMENSION ViewDimension;
+    union {
+        D3D11_TEX2D_VDOV Texture2D;
+    };
+} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
+
+typedef enum D3D11_VPIV_DIMENSION
+{
+    D3D11_VPIV_DIMENSION_UNKNOWN   = 0,
+    D3D11_VPIV_DIMENSION_TEXTURE2D = 1
+} D3D11_VPIV_DIMENSION;
+
+typedef struct D3D11_TEX2D_VPIV
+{
+    UINT MipSlice;
+    UINT ArraySlice;
+} D3D11_TEX2D_VPIV;
+
+typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC
+{
+    UINT FourCC;
+    D3D11_VPIV_DIMENSION ViewDimension;
+    union {
+        D3D11_TEX2D_VPIV Texture2D;
+    };
+} D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC;
+
+typedef enum D3D11_VPOV_DIMENSION
+{
+    D3D11_VPOV_DIMENSION_UNKNOWN        = 0,
+    D3D11_VPOV_DIMENSION_TEXTURE2D      = 1,
+    D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2
+} D3D11_VPOV_DIMENSION;
+
+typedef struct D3D11_TEX2D_VPOV
+{
+    UINT MipSlice;
+} D3D11_TEX2D_VPOV;
+
+typedef struct D3D11_TEX2D_ARRAY_VPOV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D11_TEX2D_ARRAY_VPOV;
+
+typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC
+{
+    D3D11_VPOV_DIMENSION ViewDimension;
+    union {
+        D3D11_TEX2D_VPOV Texture2D;
+        D3D11_TEX2D_ARRAY_VPOV Texture2DArray;
+    };
+} D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC;
+
+typedef struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS
+{
+    UINT Caps;
+    UINT KeyExchangeTypeCount;
+    UINT BlockAlignmentSize;
+    ULONGLONG ProtectedMemorySize;
+} D3D11_VIDEO_CONTENT_PROTECTION_CAPS;
+
+typedef struct D3D11_ENCRYPTED_BLOCK_INFO
+{
+    UINT NumEncryptedBytesAtBeginning;
+    UINT NumBytesInSkipPattern;
+    UINT NumBytesInEncryptPattern;
+} D3D11_ENCRYPTED_BLOCK_INFO;
+
+typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC
+{
+    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
+    UINT BufferIndex;
+    UINT DataOffset;
+    UINT DataSize;
+    UINT FirstMBaddress;
+    UINT NumMBsInBuffer;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    UINT ReservedBits;
+    void *pIV;
+    UINT IVSize;
+    BOOL PartialEncryption;
+    D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo;
+} D3D11_VIDEO_DECODER_BUFFER_DESC;
+
+typedef struct D3D11_VIDEO_DECODER_EXTENSION
+{
+    UINT Function;
+    void *pPrivateInputData;
+    UINT PrivateInputDataSize;
+    void *pPrivateOutputData;
+    UINT PrivateOutputDataSize;
+    UINT ResourceCount;
+    ID3D11Resource **ppResourceList;
+} D3D11_VIDEO_DECODER_EXTENSION;
+
+typedef struct D3D11_VIDEO_COLOR_YCbCrA
+{
+    float Y;
+    float Cb;
+    float Cr;
+    float A;
+} D3D11_VIDEO_COLOR_YCbCrA;
+
+typedef struct D3D11_VIDEO_COLOR_RGBA
+{
+    float R;
+    float G;
+    float B;
+    float A;
+} D3D11_VIDEO_COLOR_RGBA;
+
+typedef struct D3D11_VIDEO_COLOR
+{
+    union
+    {
+        D3D11_VIDEO_COLOR_YCbCrA YCbCr;
+        D3D11_VIDEO_COLOR_RGBA RGBA;
+    };
+} D3D11_VIDEO_COLOR;
+
+typedef struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE
+{
+    UINT Usage : 1;
+    UINT RGB_Range : 1;
+    UINT YCbCr_Matrix : 1;
+    UINT YCbCr_xvYCC : 1;
+    UINT Nominal_Range : 2;
+    UINT Reserved : 26;
+} D3D11_VIDEO_PROCESSOR_COLOR_SPACE;
+
+typedef struct D3D11_VIDEO_PROCESSOR_STREAM
+{
+    BOOL Enable;
+    UINT OutputIndex;
+    UINT InputFrameOrField;
+    UINT PastFrames;
+    UINT FutureFrames;
+    ID3D11VideoProcessorInputView **ppPastSurfaces;
+    ID3D11VideoProcessorInputView *pInputSurface;
+    ID3D11VideoProcessorInputView **ppFutureSurfaces;
+    ID3D11VideoProcessorInputView **ppPastSurfacesRight;
+    ID3D11VideoProcessorInputView *pInputSurfaceRight;
+    ID3D11VideoProcessorInputView **ppFutureSurfacesRight;
+} D3D11_VIDEO_PROCESSOR_STREAM;
+
+typedef struct D3D11_OMAC
+{
+      BYTE Omac[D3D11_OMAC_SIZE];
+} D3D11_OMAC;
+
+typedef struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT
+{
+    D3D11_OMAC omac;
+    GUID ConfigureType;
+    HANDLE hChannel;
+    UINT SequenceNumber;
+    HRESULT ReturnCode;
+} D3D11_AUTHENTICATED_CONFIGURE_OUTPUT;
+
+typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT
+{
+    UINT64 Frequency;
+    BOOL Disjoint;
+} D3D11_QUERY_DATA_TIMESTAMP_DISJOINT;
 
 [
     object,
@@ -1946,6 +2481,556 @@
 
 [
     object,
+    uuid(3015a308-dcbd-47aa-a747-192486d14d4a),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11AuthenticatedChannel : ID3D11DeviceChild
+{
+    HRESULT GetCertificateSize(
+        UINT *pCertificateSize);
+    HRESULT GetCertificate(
+        UINT CertificateSize,
+        BYTE *pCertificate);
+    void GetChannelHandle(
+        HANDLE *pChannelHandle);
+}
+
+[
+    object,
+    uuid(9b32f9ad-bdcc-40a6-a39d-d5c865845720),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11CryptoSession : ID3D11DeviceChild
+{
+    void GetCryptoType(
+        GUID *pCryptoType);
+    void GetDecoderProfile(
+        GUID *pDecoderProfile);
+    HRESULT GetCertificateSize(
+        UINT *pCertificateSize);
+    HRESULT GetCertificate(
+        UINT CertificateSize,
+        BYTE *pCertificate);
+    void GetCryptoSessionHandle(
+        HANDLE *pCryptoSessionHandle);
+}
+
+[
+    object,
+    uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoDecoder : ID3D11DeviceChild
+{
+    HRESULT GetCreationParameters(
+        D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig);
+    HRESULT GetDriverHandle(
+        HANDLE *pDriverHandle);
+}
+
+[
+    object,
+    uuid(31627037-53ab-4200-9061-05faa9ab45f9),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild
+{
+    HRESULT GetVideoProcessorContentDesc(
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc);
+    HRESULT CheckVideoProcessorFormat(
+        DXGI_FORMAT Format,
+        UINT *pFlags);
+    HRESULT GetVideoProcessorCaps(
+        D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
+    HRESULT GetVideoProcessorRateConversionCaps(
+        UINT TypeIndex,
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+    HRESULT GetVideoProcessorCustomRate(
+        UINT TypeIndex,
+        UINT CustomRateIndex,
+        D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate);
+    HRESULT GetVideoProcessorFilterRange(
+        D3D11_VIDEO_PROCESSOR_FILTER Filter,
+        D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange);
+}
+
+[
+    object,
+    uuid(1d7b0652-185f-41c6-85ce-0c5be3d4ae6c),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoProcessor : ID3D11DeviceChild
+{
+    void GetContentDesc(
+        D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
+    void GetRateConversionCaps(
+        D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
+}
+
+[
+    object,
+    uuid(c2931aea-2a85-4f20-860f-fba1fd256e18),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoDecoderOutputView : ID3D11View
+{
+    void GetDesc(
+        D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
+}
+
+[
+    object,
+    uuid(11ec5a5f-51dc-4945-ab34-6e8c21300ea5),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoProcessorInputView : ID3D11View
+{
+    void GetDesc(
+        D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc);
+}
+
+[
+    object,
+    uuid(a048285e-25a9-4527-bd93-d68b68c44254),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoProcessorOutputView : ID3D11View
+{
+    void GetDesc(
+        D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc);
+}
+
+[
+    object,
+    uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoDevice : IUnknown
+{
+    HRESULT CreateVideoDecoder(
+        const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
+        const D3D11_VIDEO_DECODER_CONFIG *pConfig,
+        ID3D11VideoDecoder **ppDecoder);
+    HRESULT CreateVideoProcessor(
+        ID3D11VideoProcessorEnumerator *pEnum,
+        UINT RateConversionIndex,
+        ID3D11VideoProcessor **ppVideoProcessor);
+    HRESULT CreateAuthenticatedChannel(
+        D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
+        ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
+    HRESULT CreateCryptoSession(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        const GUID *pKeyExchangeType,
+        ID3D11CryptoSession **ppCryptoSession);
+    HRESULT CreateVideoDecoderOutputView(
+        ID3D11Resource *pResource,
+        const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoDecoderOutputView **ppVDOVView);
+    HRESULT CreateVideoProcessorInputView(
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorInputView **ppVPIView);
+    HRESULT CreateVideoProcessorOutputView(
+        ID3D11Resource *pResource,
+        ID3D11VideoProcessorEnumerator *pEnum,
+        const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,
+        ID3D11VideoProcessorOutputView **ppVPOView);
+    HRESULT CreateVideoProcessorEnumerator(
+        const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,
+        ID3D11VideoProcessorEnumerator **ppEnum);
+    UINT GetVideoDecoderProfileCount();
+    HRESULT GetVideoDecoderProfile(
+        UINT Index,
+        GUID *pDecoderProfile);
+    HRESULT CheckVideoDecoderFormat(
+        const GUID *pDecoderProfile,
+        DXGI_FORMAT Format,
+        BOOL *pSupported);
+    HRESULT GetVideoDecoderConfigCount(
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT *pCount);
+    HRESULT GetVideoDecoderConfig(
+        const D3D11_VIDEO_DECODER_DESC *pDesc,
+        UINT Index,
+        D3D11_VIDEO_DECODER_CONFIG *pConfig);
+    HRESULT GetContentProtectionCaps(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps);
+    HRESULT CheckCryptoKeyExchange(
+        const GUID *pCryptoType,
+        const GUID *pDecoderProfile,
+        UINT Index,
+        GUID *pKeyExchangeType);
+    HRESULT SetPrivateData(
+        REFGUID guid,
+        UINT DataSize,
+        const void *pData);
+    HRESULT SetPrivateDataInterface(
+        REFGUID guid,
+        const IUnknown *pData);
+}
+
+[
+    object,
+    uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11VideoContext : ID3D11DeviceChild
+{
+    HRESULT GetDecoderBuffer(
+        [in] ID3D11VideoDecoder *decoder,
+        [in] D3D11_VIDEO_DECODER_BUFFER_TYPE type,
+        [out] UINT *buffer_size,
+        [out] void **buffer
+    );
+    HRESULT ReleaseDecoderBuffer(
+        [in] ID3D11VideoDecoder *decoder,
+        [in] D3D11_VIDEO_DECODER_BUFFER_TYPE type
+    );
+    HRESULT DecoderBeginFrame(
+        [in] ID3D11VideoDecoder *decoder,
+        [in] ID3D11VideoDecoderOutputView *view,
+        [in] UINT key_size,
+        [in] const void *key
+    );
+    HRESULT DecoderEndFrame(
+        [in] ID3D11VideoDecoder *decoder
+    );
+    HRESULT SubmitDecoderBuffers(
+        [in] ID3D11VideoDecoder *decoder,
+        [in] UINT buffers_count,
+        [in] const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc
+    );
+    HRESULT DecoderExtension(
+        [in] ID3D11VideoDecoder *decoder,
+        [in] const D3D11_VIDEO_DECODER_EXTENSION *extension
+    );
+    void VideoProcessorSetOutputTargetRect(
+        [in] ID3D11VideoProcessor *processor,
+        [in] BOOL enable,
+        [in] const RECT *rect
+    );
+    void VideoProcessorSetOutputBackgroundColor(
+        [in] ID3D11VideoProcessor *processor,
+        [in] BOOL y_cb_cr,
+        [in] const D3D11_VIDEO_COLOR *color
+    );
+    void VideoProcessorSetOutputColorSpace(
+        [in] ID3D11VideoProcessor *processor,
+        [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
+    );
+    void VideoProcessorSetOutputAlphaFillMode(
+        [in] ID3D11VideoProcessor *processor,
+        [in] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,
+        [in] UINT stream_idx
+    );
+    void VideoProcessorSetOutputConstriction(
+        [in] ID3D11VideoProcessor *processor,
+        [in] BOOL enable,
+        [in] SIZE size
+    );
+    void VideoProcessorSetOutputStereoMode(
+        [in] ID3D11VideoProcessor *processor,
+        [in] BOOL enable
+    );
+    HRESULT VideoProcessorSetOutputExtension(
+        [in] ID3D11VideoProcessor *processor,
+        [in] const GUID *guid,
+        [in] UINT data_size,
+        [in] void *data
+    );
+    void VideoProcessorGetOutputTargetRect(
+        [in] ID3D11VideoProcessor *processor,
+        [out] BOOL *enabled,
+        [out] RECT *rect
+    );
+    void VideoProcessorGetOutputBackgroundColor(
+        [in] ID3D11VideoProcessor *processor,
+        [out] BOOL *y_cb_cr,
+        [out] D3D11_VIDEO_COLOR *color
+    );
+    void VideoProcessorGetOutputColorSpace(
+        [in] ID3D11VideoProcessor *processor,
+        [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
+    );
+    void VideoProcessorGetOutputAlphaFillMode(
+        [in] ID3D11VideoProcessor *processor,
+        [out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,
+        [out] UINT *stream_idx
+    );
+    void VideoProcessorGetOutputConstriction(
+        [in] ID3D11VideoProcessor *processor,
+        [out] BOOL *enabled,
+        [out] SIZE *size
+    );
+    void VideoProcessorGetOutputStereoMode(
+        [in] ID3D11VideoProcessor *processor,
+        [out] BOOL *enabled
+    );
+    HRESULT VideoProcessorGetOutputExtension(
+        [in] ID3D11VideoProcessor *processor,
+        [in] const GUID *guid,
+        [in] UINT data_size,
+        [out] void *data
+    );
+    void VideoProcessorSetStreamFrameFormat(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] D3D11_VIDEO_FRAME_FORMAT format
+    );
+    void VideoProcessorSetStreamColorSpace(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
+    );
+    void VideoProcessorSetStreamOutputRate(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,
+        [in] BOOL repeat,
+        [in] const DXGI_RATIONAL *custom_rate
+    );
+    void VideoProcessorSetStreamSourceRect(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] const RECT *rect
+    );
+    void VideoProcessorSetStreamDestRect(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] const RECT *rect
+    );
+    void VideoProcessorSetStreamAlpha(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] float alpha
+    );
+    void VideoProcessorSetStreamPalette(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] UINT entry_count,
+        [in] const UINT *entries
+    );
+    void VideoProcessorSetStreamPixelAspectRatio(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] const DXGI_RATIONAL *src_aspect_ratio,
+        [in] const DXGI_RATIONAL *dst_aspect_ratio
+    );
+    void VideoProcessorSetStreamLumaKey(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] float lower,
+        [in] float upper
+    );
+    void VideoProcessorSetStreamStereoFormat(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,
+        [in] BOOL left_view_frame0,
+        [in] BOOL base_view_frame0,
+        [in] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,
+        [in] int mono_offset
+    );
+    void VideoProcessorSetStreamAutoProcessingMode(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable
+    );
+    void VideoProcessorSetStreamFilter(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] D3D11_VIDEO_PROCESSOR_FILTER filter,
+        [in] BOOL enable,
+        [in] int level
+    );
+    HRESULT VideoProcessorSetStreamExtension(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] const GUID *guid,
+        [in] UINT data_size,
+        [in] void *data
+    );
+    void VideoProcessorGetStreamFrameFormat(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] D3D11_VIDEO_FRAME_FORMAT *format
+    );
+    void VideoProcessorGetStreamColorSpace(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
+    );
+    void VideoProcessorGetStreamOutputRate(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,
+        [out] BOOL *repeat,
+        [out] DXGI_RATIONAL *custom_rate
+    );
+    void VideoProcessorGetStreamSourceRect(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] RECT *rect
+    );
+    void VideoProcessorGetStreamDestRect(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] RECT *rect
+    );
+    void VideoProcessorGetStreamAlpha(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] float *alpha
+    );
+    void VideoProcessorGetStreamPalette(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] UINT entry_count,
+        [out] UINT *entries
+    );
+    void VideoProcessorGetStreamPixelAspectRatio(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] DXGI_RATIONAL *src_aspect_ratio,
+        [out] DXGI_RATIONAL *dst_aspect_ratio
+    );
+    void VideoProcessorGetStreamLumaKey(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] float *lower,
+        [out] float *upper
+    );
+    void VideoProcessorGetStreamStereoFormat(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled,
+        [out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,
+        [out] BOOL *left_view_frame0,
+        [out] BOOL *base_view_frame0,
+        [out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,
+        [out] int *mono_offset
+    );
+    void VideoProcessorGetStreamAutoProcessingMode(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enabled
+    );
+    void VideoProcessorGetStreamFilter(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] D3D11_VIDEO_PROCESSOR_FILTER filter,
+        [out] BOOL *enabled,
+        [out] int *level
+    );
+    HRESULT VideoProcessorGetStreamExtension(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] const GUID *guid,
+        [in] UINT data_size,
+        [out] void *data
+    );
+    HRESULT VideoProcessorBlt(
+        [in] ID3D11VideoProcessor *processor,
+        [in] ID3D11VideoProcessorOutputView *view,
+        [in] UINT frame_idx,
+        [in] UINT stream_count,
+        [in] const D3D11_VIDEO_PROCESSOR_STREAM *streams
+    );
+    HRESULT NegotiateCryptoSessionKeyExchange(
+        [in] ID3D11CryptoSession *session,
+        [in] UINT data_size,
+        [in, out] void *data
+    );
+    void EncryptionBlt(
+        [in] ID3D11CryptoSession *session,
+        [in] ID3D11Texture2D *src_surface,
+        [in] ID3D11Texture2D *dst_surface,
+        [in] UINT iv_size,
+        [in, out] void *iv
+    );
+    void DecryptionBlt(
+        [in] ID3D11CryptoSession *session,
+        [in] ID3D11Texture2D *src_surface,
+        [in] ID3D11Texture2D *dst_surface,
+        [in] D3D11_ENCRYPTED_BLOCK_INFO *block_info,
+        [in] UINT key_size,
+        [in] const void *key,
+        [in] UINT iv_size,
+        [in, out] void *iv
+    );
+    void StartSessionKeyRefresh(
+        [in] ID3D11CryptoSession *session,
+        [in] UINT random_number_size,
+        [out] void *random_number
+    );
+    void FinishSessionKeyRefresh(
+        [in] ID3D11CryptoSession *session
+    );
+    HRESULT GetEncryptionBltKey(
+        [in] ID3D11CryptoSession *session,
+        [in] UINT key_size,
+        [out] void *key
+    );
+    HRESULT NegotiateAuthenticatedChannelKeyExchange(
+        [in] ID3D11AuthenticatedChannel *channel,
+        [in] UINT data_size,
+        [in, out] void *data
+    );
+    HRESULT QueryAuthenticatedChannel(
+        [in] ID3D11AuthenticatedChannel *channel,
+        [in] UINT input_size,
+        [in] const void *input,
+        [in] UINT output_size,
+        [out] void *output
+    );
+    HRESULT ConfigureAuthenticatedChannel(
+        [in] ID3D11AuthenticatedChannel *channel,
+        [in] UINT input_size,
+        [in] const void *input,
+        [out] D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output
+    );
+    void VideoProcessorSetStreamRotation(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [in] BOOL enable,
+        [in] D3D11_VIDEO_PROCESSOR_ROTATION rotation
+    );
+    void VideoProcessorGetStreamRotation(
+        [in] ID3D11VideoProcessor *processor,
+        [in] UINT stream_idx,
+        [out] BOOL *enable,
+        [out] D3D11_VIDEO_PROCESSOR_ROTATION *rotation
+    );
+}
+
+[
+    object,
     local,
     uuid(db6f6ddb-ac77-4e88-8253-819df9bbf140)
 ]
@@ -2134,3 +3219,8 @@
 cpp_quote("typedef HRESULT (WINAPI *PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN)(IDXGIAdapter*,D3D_DRIVER_TYPE,HMODULE,UINT,")
 cpp_quote("    const D3D_FEATURE_LEVEL*,UINT,UINT,const DXGI_SWAP_CHAIN_DESC*,IDXGISwapChain**,ID3D11Device**,")
 cpp_quote("    D3D_FEATURE_LEVEL*,ID3D11DeviceContext**);")
+
+[local] HRESULT __stdcall D3D11CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type,
+        HMODULE swrast, UINT flags, const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version,
+        const DXGI_SWAP_CHAIN_DESC *swapchain_desc, IDXGISwapChain **swapchain, ID3D11Device **device,
+        D3D_FEATURE_LEVEL *obtained_feature_level, ID3D11DeviceContext **immediate_context);
diff --git a/x86_64-w64-mingw32/include/d3d11_1.h b/x86_64-w64-mingw32/include/d3d11_1.h
index e4ffaca..51ca735 100644
--- a/x86_64-w64-mingw32/include/d3d11_1.h
+++ b/x86_64-w64-mingw32/include/d3d11_1.h
@@ -471,7 +471,7 @@
 
     virtual void STDMETHODCALLTYPE ClearView(
         ID3D11View *pView,
-        FLOAT Color[4],
+        const FLOAT Color[4],
         const D3D11_RECT *pRect,
         UINT NumRects) = 0;
 
@@ -1279,7 +1279,7 @@
     void (STDMETHODCALLTYPE *ClearView)(
         ID3D11DeviceContext1* This,
         ID3D11View *pView,
-        FLOAT Color[4],
+        const FLOAT Color[4],
         const D3D11_RECT *pRect,
         UINT NumRects);
 
@@ -1836,7 +1836,7 @@
 static FORCEINLINE void ID3D11DeviceContext1_SwapDeviceContextState(ID3D11DeviceContext1* This,ID3DDeviceContextState *pState,ID3DDeviceContextState **ppPreviousState) {
     This->lpVtbl->SwapDeviceContextState(This,pState,ppPreviousState);
 }
-static FORCEINLINE void ID3D11DeviceContext1_ClearView(ID3D11DeviceContext1* This,ID3D11View *pView,FLOAT Color[4],const D3D11_RECT *pRect,UINT NumRects) {
+static FORCEINLINE void ID3D11DeviceContext1_ClearView(ID3D11DeviceContext1* This,ID3D11View *pView,const FLOAT Color[4],const D3D11_RECT *pRect,UINT NumRects) {
     This->lpVtbl->ClearView(This,pView,Color,pRect,NumRects);
 }
 static FORCEINLINE void ID3D11DeviceContext1_DiscardView1(ID3D11DeviceContext1* This,ID3D11View *pResourceView,const D3D11_RECT *pRects,UINT NumRects) {
@@ -2049,7 +2049,7 @@
 void STDMETHODCALLTYPE ID3D11DeviceContext1_ClearView_Proxy(
     ID3D11DeviceContext1* This,
     ID3D11View *pView,
-    FLOAT Color[4],
+    const FLOAT Color[4],
     const D3D11_RECT *pRect,
     UINT NumRects);
 void __RPC_STUB ID3D11DeviceContext1_ClearView_Stub(
diff --git a/x86_64-w64-mingw32/include/d3d11_1.idl b/x86_64-w64-mingw32/include/d3d11_1.idl
index 1ebfc5a..1a46abf 100644
--- a/x86_64-w64-mingw32/include/d3d11_1.idl
+++ b/x86_64-w64-mingw32/include/d3d11_1.idl
@@ -217,7 +217,7 @@
 
     void ClearView(
             ID3D11View *pView,
-            FLOAT Color[4],
+            const FLOAT Color[4],
             const D3D11_RECT *pRect,
             UINT NumRects);
 
diff --git a/x86_64-w64-mingw32/include/d3d11sdklayers.h b/x86_64-w64-mingw32/include/d3d11sdklayers.h
index efce823..05faeba 100644
--- a/x86_64-w64-mingw32/include/d3d11sdklayers.h
+++ b/x86_64-w64-mingw32/include/d3d11sdklayers.h
@@ -17,6 +17,11 @@
 
 /* Forward declarations */
 
+#ifndef __ID3D11Debug_FWD_DEFINED__
+#define __ID3D11Debug_FWD_DEFINED__
+typedef interface ID3D11Debug ID3D11Debug;
+#endif
+
 #ifndef __ID3D11InfoQueue_FWD_DEFINED__
 #define __ID3D11InfoQueue_FWD_DEFINED__
 typedef interface ID3D11InfoQueue ID3D11InfoQueue;
@@ -1190,6 +1195,10 @@
     D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET_DUE_TO_FLIP_PRESENT = 0x300163,
     D3D11_MESSAGE_ID_D3D11_1_MESSAGES_END = 0x300164
 } D3D11_MESSAGE_ID;
+typedef enum D3D11_RLDO_FLAGS {
+    D3D11_RLDO_SUMMARY = 1,
+    D3D11_RLDO_DETAIL = 2
+} D3D11_RLDO_FLAGS;
 typedef struct D3D11_MESSAGE {
     D3D11_MESSAGE_CATEGORY Category;
     D3D11_MESSAGE_SEVERITY Severity;
@@ -1211,6 +1220,238 @@
 } D3D11_INFO_QUEUE_FILTER;
 #define D3D11_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
 /*****************************************************************************
+ * ID3D11Debug interface
+ */
+#ifndef __ID3D11Debug_INTERFACE_DEFINED__
+#define __ID3D11Debug_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ID3D11Debug, 0x79cf2233, 0x7536, 0x4948, 0x9d,0x36, 0x1e,0x46,0x92,0xdc,0x57,0x60);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("79cf2233-7536-4948-9d36-1e4692dc5760")
+ID3D11Debug : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
+        UINT Mask) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetFeatureMask(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPresentPerRenderOpDelay(
+        UINT Milliseconds) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetPresentPerRenderOpDelay(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSwapChain(
+        IDXGISwapChain *pSwapChain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSwapChain(
+        IDXGISwapChain **ppSwapChain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ValidateContext(
+        ID3D11DeviceContext *pContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
+        D3D11_RLDO_FLAGS Flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ValidateContextForDispatch(
+        ID3D11DeviceContext *pContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ID3D11Debug, 0x79cf2233, 0x7536, 0x4948, 0x9d,0x36, 0x1e,0x46,0x92,0xdc,0x57,0x60)
+#endif
+#else
+typedef struct ID3D11DebugVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ID3D11Debug* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ID3D11Debug* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ID3D11Debug* This);
+
+    /*** ID3D11Debug methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFeatureMask)(
+        ID3D11Debug* This,
+        UINT Mask);
+
+    UINT (STDMETHODCALLTYPE *GetFeatureMask)(
+        ID3D11Debug* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetPresentPerRenderOpDelay)(
+        ID3D11Debug* This,
+        UINT Milliseconds);
+
+    UINT (STDMETHODCALLTYPE *GetPresentPerRenderOpDelay)(
+        ID3D11Debug* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetSwapChain)(
+        ID3D11Debug* This,
+        IDXGISwapChain *pSwapChain);
+
+    HRESULT (STDMETHODCALLTYPE *GetSwapChain)(
+        ID3D11Debug* This,
+        IDXGISwapChain **ppSwapChain);
+
+    HRESULT (STDMETHODCALLTYPE *ValidateContext)(
+        ID3D11Debug* This,
+        ID3D11DeviceContext *pContext);
+
+    HRESULT (STDMETHODCALLTYPE *ReportLiveDeviceObjects)(
+        ID3D11Debug* This,
+        D3D11_RLDO_FLAGS Flags);
+
+    HRESULT (STDMETHODCALLTYPE *ValidateContextForDispatch)(
+        ID3D11Debug* This,
+        ID3D11DeviceContext *pContext);
+
+    END_INTERFACE
+} ID3D11DebugVtbl;
+interface ID3D11Debug {
+    CONST_VTBL ID3D11DebugVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ID3D11Debug_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ID3D11Debug_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ID3D11Debug_Release(This) (This)->lpVtbl->Release(This)
+/*** ID3D11Debug methods ***/
+#define ID3D11Debug_SetFeatureMask(This,Mask) (This)->lpVtbl->SetFeatureMask(This,Mask)
+#define ID3D11Debug_GetFeatureMask(This) (This)->lpVtbl->GetFeatureMask(This)
+#define ID3D11Debug_SetPresentPerRenderOpDelay(This,Milliseconds) (This)->lpVtbl->SetPresentPerRenderOpDelay(This,Milliseconds)
+#define ID3D11Debug_GetPresentPerRenderOpDelay(This) (This)->lpVtbl->GetPresentPerRenderOpDelay(This)
+#define ID3D11Debug_SetSwapChain(This,pSwapChain) (This)->lpVtbl->SetSwapChain(This,pSwapChain)
+#define ID3D11Debug_GetSwapChain(This,ppSwapChain) (This)->lpVtbl->GetSwapChain(This,ppSwapChain)
+#define ID3D11Debug_ValidateContext(This,pContext) (This)->lpVtbl->ValidateContext(This,pContext)
+#define ID3D11Debug_ReportLiveDeviceObjects(This,Flags) (This)->lpVtbl->ReportLiveDeviceObjects(This,Flags)
+#define ID3D11Debug_ValidateContextForDispatch(This,pContext) (This)->lpVtbl->ValidateContextForDispatch(This,pContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ID3D11Debug_QueryInterface(ID3D11Debug* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ID3D11Debug_AddRef(ID3D11Debug* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ID3D11Debug_Release(ID3D11Debug* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ID3D11Debug methods ***/
+static FORCEINLINE HRESULT ID3D11Debug_SetFeatureMask(ID3D11Debug* This,UINT Mask) {
+    return This->lpVtbl->SetFeatureMask(This,Mask);
+}
+static FORCEINLINE UINT ID3D11Debug_GetFeatureMask(ID3D11Debug* This) {
+    return This->lpVtbl->GetFeatureMask(This);
+}
+static FORCEINLINE HRESULT ID3D11Debug_SetPresentPerRenderOpDelay(ID3D11Debug* This,UINT Milliseconds) {
+    return This->lpVtbl->SetPresentPerRenderOpDelay(This,Milliseconds);
+}
+static FORCEINLINE UINT ID3D11Debug_GetPresentPerRenderOpDelay(ID3D11Debug* This) {
+    return This->lpVtbl->GetPresentPerRenderOpDelay(This);
+}
+static FORCEINLINE HRESULT ID3D11Debug_SetSwapChain(ID3D11Debug* This,IDXGISwapChain *pSwapChain) {
+    return This->lpVtbl->SetSwapChain(This,pSwapChain);
+}
+static FORCEINLINE HRESULT ID3D11Debug_GetSwapChain(ID3D11Debug* This,IDXGISwapChain **ppSwapChain) {
+    return This->lpVtbl->GetSwapChain(This,ppSwapChain);
+}
+static FORCEINLINE HRESULT ID3D11Debug_ValidateContext(ID3D11Debug* This,ID3D11DeviceContext *pContext) {
+    return This->lpVtbl->ValidateContext(This,pContext);
+}
+static FORCEINLINE HRESULT ID3D11Debug_ReportLiveDeviceObjects(ID3D11Debug* This,D3D11_RLDO_FLAGS Flags) {
+    return This->lpVtbl->ReportLiveDeviceObjects(This,Flags);
+}
+static FORCEINLINE HRESULT ID3D11Debug_ValidateContextForDispatch(ID3D11Debug* This,ID3D11DeviceContext *pContext) {
+    return This->lpVtbl->ValidateContextForDispatch(This,pContext);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ID3D11Debug_SetFeatureMask_Proxy(
+    ID3D11Debug* This,
+    UINT Mask);
+void __RPC_STUB ID3D11Debug_SetFeatureMask_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE ID3D11Debug_GetFeatureMask_Proxy(
+    ID3D11Debug* This);
+void __RPC_STUB ID3D11Debug_GetFeatureMask_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_SetPresentPerRenderOpDelay_Proxy(
+    ID3D11Debug* This,
+    UINT Milliseconds);
+void __RPC_STUB ID3D11Debug_SetPresentPerRenderOpDelay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE ID3D11Debug_GetPresentPerRenderOpDelay_Proxy(
+    ID3D11Debug* This);
+void __RPC_STUB ID3D11Debug_GetPresentPerRenderOpDelay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_SetSwapChain_Proxy(
+    ID3D11Debug* This,
+    IDXGISwapChain *pSwapChain);
+void __RPC_STUB ID3D11Debug_SetSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_GetSwapChain_Proxy(
+    ID3D11Debug* This,
+    IDXGISwapChain **ppSwapChain);
+void __RPC_STUB ID3D11Debug_GetSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_ValidateContext_Proxy(
+    ID3D11Debug* This,
+    ID3D11DeviceContext *pContext);
+void __RPC_STUB ID3D11Debug_ValidateContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_ReportLiveDeviceObjects_Proxy(
+    ID3D11Debug* This,
+    D3D11_RLDO_FLAGS Flags);
+void __RPC_STUB ID3D11Debug_ReportLiveDeviceObjects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ID3D11Debug_ValidateContextForDispatch_Proxy(
+    ID3D11Debug* This,
+    ID3D11DeviceContext *pContext);
+void __RPC_STUB ID3D11Debug_ValidateContextForDispatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ID3D11Debug_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ID3D11InfoQueue interface
  */
 #ifndef __ID3D11InfoQueue_INTERFACE_DEFINED__
diff --git a/x86_64-w64-mingw32/include/d3d11sdklayers.idl b/x86_64-w64-mingw32/include/d3d11sdklayers.idl
index e74922a..638e53c 100644
--- a/x86_64-w64-mingw32/include/d3d11sdklayers.idl
+++ b/x86_64-w64-mingw32/include/d3d11sdklayers.idl
@@ -1184,6 +1184,11 @@
     D3D11_MESSAGE_ID_D3D11_1_MESSAGES_END
 } D3D11_MESSAGE_ID;
 
+typedef enum D3D11_RLDO_FLAGS {
+    D3D11_RLDO_SUMMARY = 1,
+    D3D11_RLDO_DETAIL = 2
+} D3D11_RLDO_FLAGS;
+
 typedef struct D3D11_MESSAGE {
     D3D11_MESSAGE_CATEGORY Category;
     D3D11_MESSAGE_SEVERITY Severity;
@@ -1210,6 +1215,24 @@
 
 [
     object,
+    uuid(79cf2233-7536-4948-9d36-1e4692dc5760),
+    local,
+    pointer_default(unique)
+]
+interface ID3D11Debug : IUnknown {
+    HRESULT SetFeatureMask(UINT Mask);
+    UINT GetFeatureMask();
+    HRESULT SetPresentPerRenderOpDelay(UINT Milliseconds);
+    UINT GetPresentPerRenderOpDelay();
+    HRESULT SetSwapChain(IDXGISwapChain *pSwapChain);
+    HRESULT GetSwapChain(IDXGISwapChain **ppSwapChain);
+    HRESULT ValidateContext(ID3D11DeviceContext *pContext);
+    HRESULT ReportLiveDeviceObjects(D3D11_RLDO_FLAGS Flags);
+    HRESULT ValidateContextForDispatch(ID3D11DeviceContext *pContext);
+}
+
+[
+    object,
     uuid(6543dbb6-1b48-42f5-ab82-e97ec74326f6),
     local,
     pointer_default(unique)
diff --git a/x86_64-w64-mingw32/include/d3d8types.h b/x86_64-w64-mingw32/include/d3d8types.h
index d797d81..d14e20a 100644
--- a/x86_64-w64-mingw32/include/d3d8types.h
+++ b/x86_64-w64-mingw32/include/d3d8types.h
@@ -38,7 +38,7 @@
 #define D3DCLIPPLANE4 (1 << 4)
 #define D3DCLIPPLANE5 (1 << 5)
 
-#define D3DCOLOR_ARGB(a,r,g,b)        ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_ARGB(a,r,g,b)        ((D3DCOLOR)((((a)&0xffu)<<24)|(((r)&0xffu)<<16)|(((g)&0xffu)<<8)|((b)&0xffu)))
 #define D3DCOLOR_COLORVALUE(r,g,b,a)  D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
 #define D3DCOLOR_RGBA(r,g,b,a)        D3DCOLOR_ARGB(a,r,g,b)
 #define D3DCOLOR_XRGB(r,g,b)          D3DCOLOR_ARGB(0xff,r,g,b)
@@ -263,11 +263,11 @@
 #define D3DVSD_CONSTCOUNTMASK    (0xF      << D3DVSD_CONSTCOUNTSHIFT)
 #define D3DVSD_DATALOADTYPEMASK  (0x1      << D3DVSD_DATALOADTYPESHIFT)
 #define D3DVSD_STREAMTESSMASK    (0x1      << D3DVSD_STREAMTESSSHIFT)
-#define D3DVSD_TOKENTYPEMASK     (0x7      << D3DVSD_TOKENTYPESHIFT)
+#define D3DVSD_TOKENTYPEMASK     (0x7u     << D3DVSD_TOKENTYPESHIFT)
 
 
 #define D3DVSD_MAKETOKENTYPE(TokenType) \
-  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
+  (((unsigned)TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
 
 #define D3DVSD_CONST(ConstantAddress, Count) \
   (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
diff --git a/x86_64-w64-mingw32/include/d3d9.h b/x86_64-w64-mingw32/include/d3d9.h
index 1557fa2..c9f2be9 100644
--- a/x86_64-w64-mingw32/include/d3d9.h
+++ b/x86_64-w64-mingw32/include/d3d9.h
@@ -495,8 +495,8 @@
 /*** IDirect3DSwapChain9 methods ***/
 #define IDirect3DSwapChain9Ex_Present(p,a,b,c,d,e)       (p)->lpVtbl->Present(p,a,b,c,d,e)
 #define IDirect3DSwapChain9Ex_GetFrontBufferData(p,a)    (p)->lpVtbl->GetFrontBufferData(p,a)
-#define IDirect3DSwapChain9EX_GetBackBuffer(p,a,b,c)     (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#define IDirect3DSwapChain9EX_GetRasterStatus(p,a)       (p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DSwapChain9Ex_GetBackBuffer(p,a,b,c)     (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DSwapChain9Ex_GetRasterStatus(p,a)       (p)->lpVtbl->GetRasterStatus(p,a)
 #define IDirect3DSwapChain9Ex_GetDisplayMode(p,a)        (p)->lpVtbl->GetDisplayMode(p,a)
 #define IDirect3DSwapChain9Ex_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
 #define IDirect3DSwapChain9Ex_GetPresentParameters(p,a)  (p)->lpVtbl->GetPresentParameters(p,a)
diff --git a/x86_64-w64-mingw32/include/d3d9caps.h b/x86_64-w64-mingw32/include/d3d9caps.h
index 5cc757b..424b20c 100644
--- a/x86_64-w64-mingw32/include/d3d9caps.h
+++ b/x86_64-w64-mingw32/include/d3d9caps.h
@@ -116,6 +116,9 @@
 #define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING __MSABI_LONG(0x00080000)
 #define D3DPMISCCAPS_FOGVERTEXCLAMPED           __MSABI_LONG(0x00100000)
 
+#ifndef D3D_DISABLE_9EX
+#define D3DPMISCCAPS_POSTBLENDSRGBCONVERT       __MSABI_LONG(0x00200000)
+#endif
 
 #define D3DPRASTERCAPS_DITHER                     __MSABI_LONG(0x00000001)
 #define D3DPRASTERCAPS_PAT                        __MSABI_LONG(0x00000008)
diff --git a/x86_64-w64-mingw32/include/d3d9types.h b/x86_64-w64-mingw32/include/d3d9types.h
index 86522f6..56a4ac5 100644
--- a/x86_64-w64-mingw32/include/d3d9types.h
+++ b/x86_64-w64-mingw32/include/d3d9types.h
@@ -60,10 +60,10 @@
 #define D3DCS_PLANE5                 __MSABI_LONG(0x800)
 #define D3DCS_ALL                    __MSABI_LONG(0xFFF)
 
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
+#define D3DFVF_TEXTUREFORMAT1 3u
+#define D3DFVF_TEXTUREFORMAT2 0u
+#define D3DFVF_TEXTUREFORMAT3 1u
+#define D3DFVF_TEXTUREFORMAT4 2u
 #define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
 #define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
 #define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
@@ -113,6 +113,14 @@
 #define D3DUSAGE_AUTOGENMIPMAP      __MSABI_LONG(0x00000400)
 #define D3DUSAGE_DMAP               __MSABI_LONG(0x00004000)
 
+/* Parts added with d3d9ex */
+#if !defined(D3D_DISABLE_9EX)
+#define D3DUSAGE_RESTRICTED_CONTENT              __MSABI_LONG(0x00000800)
+#define D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER __MSABI_LONG(0x00001000)
+#define D3DUSAGE_RESTRICT_SHARED_RESOURCE        __MSABI_LONG(0x00002000)
+#define D3DUSAGE_TEXTAPI                         __MSABI_LONG(0x10000000)
+#endif /* D3D_DISABLE_9EX */
+
 #define D3DUSAGE_QUERY_FILTER                   __MSABI_LONG(0x00020000)
 #define D3DUSAGE_QUERY_LEGACYBUMPMAP            __MSABI_LONG(0x00008000)
 #define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING __MSABI_LONG(0x00080000)
@@ -178,8 +186,8 @@
 
 #define D3DPV_DONOTCOPYDATA         (1 << 0)
 
-#define D3DSTREAMSOURCE_INDEXEDDATA  (1 << 30)
-#define D3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
+#define D3DSTREAMSOURCE_INDEXEDDATA  (1u << 30)
+#define D3DSTREAMSOURCE_INSTANCEDATA (2u << 30)
 
 #define D3D_MAX_SIMULTANEOUS_RENDERTARGETS 4
 
diff --git a/x86_64-w64-mingw32/include/d3dcommon.h b/x86_64-w64-mingw32/include/d3dcommon.h
index 5c1e674..e48e3db 100644
--- a/x86_64-w64-mingw32/include/d3dcommon.h
+++ b/x86_64-w64-mingw32/include/d3dcommon.h
@@ -290,6 +290,17 @@
     D3D11_SVC_INTERFACE_POINTER = 7,
     D3D_SVC_FORCE_DWORD = 0x7fffffff
 } D3D_SHADER_VARIABLE_CLASS;
+typedef enum _D3D_SHADER_VARIABLE_FLAGS {
+    D3D_SVF_USERPACKED = 0x1,
+    D3D_SVF_USED = 0x2,
+    D3D_SVF_INTERFACE_POINTER = 0x4,
+    D3D_SVF_INTERFACE_PARAMETER = 0x8,
+    D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
+    D3D10_SVF_USED = D3D_SVF_USED,
+    D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
+    D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
+    D3D_SVF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_VARIABLE_FLAGS;
 typedef enum _D3D_SHADER_VARIABLE_TYPE {
     D3D_SVT_VOID = 0,
     D3D_SVT_BOOL = 1,
@@ -397,6 +408,20 @@
     D3D11_SVT_CONSUME_STRUCTURED_BUFFER = 51,
     D3D_SVT_FORCE_DWORD = 0x7fffffff
 } D3D_SHADER_VARIABLE_TYPE;
+typedef enum _D3D_SHADER_INPUT_FLAGS {
+    D3D_SIF_USERPACKED = 0x1,
+    D3D_SIF_COMPARISON_SAMPLER = 0x2,
+    D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
+    D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
+    D3D_SIF_TEXTURE_COMPONENTS = 0xc,
+    D3D_SIF_UNUSED = 0x10,
+    D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
+    D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
+    D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
+    D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
+    D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
+    D3D_SIF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_INPUT_FLAGS;
 typedef enum D3D_PRIMITIVE {
     D3D_PRIMITIVE_UNDEFINED = 0,
     D3D_PRIMITIVE_POINT = 1,
@@ -776,6 +801,11 @@
     D3D11_SIT_UAV_CONSUME_STRUCTURED = 10,
     D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = 11
 } D3D_SHADER_INPUT_TYPE;
+typedef enum _D3D_SHADER_CBUFFER_FLAGS {
+    D3D_CBF_USERPACKED = 0x1,
+    D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
+    D3D_CBF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_CBUFFER_FLAGS;
 DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
 /* Begin additional prototypes for all interfaces */
 
diff --git a/x86_64-w64-mingw32/include/d3dcommon.idl b/x86_64-w64-mingw32/include/d3dcommon.idl
index f8fe203..c7e3b4d 100644
--- a/x86_64-w64-mingw32/include/d3dcommon.idl
+++ b/x86_64-w64-mingw32/include/d3dcommon.idl
@@ -126,6 +126,19 @@
     D3D_SVC_FORCE_DWORD = 0x7fffffff,
 } D3D_SHADER_VARIABLE_CLASS;
 
+typedef enum _D3D_SHADER_VARIABLE_FLAGS
+{
+    D3D_SVF_USERPACKED            = 0x01,
+    D3D_SVF_USED                  = 0x02,
+    D3D_SVF_INTERFACE_POINTER     = 0x04,
+    D3D_SVF_INTERFACE_PARAMETER   = 0x08,
+    D3D10_SVF_USERPACKED          = D3D_SVF_USERPACKED,
+    D3D10_SVF_USED                = D3D_SVF_USED,
+    D3D11_SVF_INTERFACE_POINTER   = D3D_SVF_INTERFACE_POINTER,
+    D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
+    D3D_SVF_FORCE_DWORD           = 0x7fffffff
+} D3D_SHADER_VARIABLE_FLAGS;
+
 typedef enum _D3D_SHADER_VARIABLE_TYPE
 {
     D3D_SVT_VOID,
@@ -235,6 +248,22 @@
     D3D_SVT_FORCE_DWORD = 0x7fffffff,
 } D3D_SHADER_VARIABLE_TYPE;
 
+typedef enum _D3D_SHADER_INPUT_FLAGS
+{
+    D3D_SIF_USERPACKED            = 0x01,
+    D3D_SIF_COMPARISON_SAMPLER    = 0x02,
+    D3D_SIF_TEXTURE_COMPONENT_0   = 0x04,
+    D3D_SIF_TEXTURE_COMPONENT_1   = 0x08,
+    D3D_SIF_TEXTURE_COMPONENTS    = 0x0C,
+    D3D_SIF_UNUSED                = 0x10,
+    D3D10_SIF_USERPACKED          = D3D_SIF_USERPACKED,
+    D3D10_SIF_COMPARISON_SAMPLER  = D3D_SIF_COMPARISON_SAMPLER,
+    D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
+    D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
+    D3D10_SIF_TEXTURE_COMPONENTS  = D3D_SIF_TEXTURE_COMPONENTS,
+    D3D_SIF_FORCE_DWORD           = 0x7fffffff
+} D3D_SHADER_INPUT_FLAGS;
+
 typedef enum D3D_PRIMITIVE
 {
     D3D_PRIMITIVE_UNDEFINED,
@@ -636,4 +665,11 @@
     D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
 } D3D_SHADER_INPUT_TYPE;
 
+typedef enum _D3D_SHADER_CBUFFER_FLAGS
+{
+    D3D_CBF_USERPACKED      = 0x01,
+    D3D10_CBF_USERPACKED    = D3D_CBF_USERPACKED,
+    D3D_CBF_FORCE_DWORD     = 0x7fffffff
+} D3D_SHADER_CBUFFER_FLAGS;
+
 cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
diff --git a/x86_64-w64-mingw32/include/d3dcompiler.h b/x86_64-w64-mingw32/include/d3dcompiler.h
index c9358b9..1c59c66 100644
--- a/x86_64-w64-mingw32/include/d3dcompiler.h
+++ b/x86_64-w64-mingw32/include/d3dcompiler.h
@@ -108,7 +108,8 @@
 HRESULT WINAPI D3DGetOutputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob);
 HRESULT WINAPI D3DGetInputAndOutputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob);
 HRESULT WINAPI D3DGetDebugInfo(const void *data, SIZE_T data_size, ID3DBlob **blob);
-
+HRESULT WINAPI D3DReadFileToBlob(const WCHAR *filename, ID3DBlob **contents);
+HRESULT WINAPI D3DWriteBlobToFile(ID3DBlob *blob, const WCHAR *filename, WINBOOL overwrite);
 HRESULT WINAPI D3DReflect(const void *data, SIZE_T data_size, REFIID riid, void **reflector);
 
 HRESULT WINAPI D3DCreateBlob(SIZE_T data_size, ID3DBlob **blob);
diff --git a/x86_64-w64-mingw32/include/d3drm.h b/x86_64-w64-mingw32/include/d3drm.h
index bf10ca4..7930f58 100644
--- a/x86_64-w64-mingw32/include/d3drm.h
+++ b/x86_64-w64-mingw32/include/d3drm.h
@@ -354,7 +354,7 @@
     STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, IDirect3DRMMaterial2 **material) PURE;
     STDMETHOD(CreateDevice)(THIS_ DWORD width, DWORD height, IDirect3DRMDevice3 **device) PURE;
     STDMETHOD(CreateDeviceFromSurface)(THIS_ GUID *guid, IDirectDraw *ddraw,
-            IDirectDrawSurface *surface, IDirect3DRMDevice3 **device) PURE;
+            IDirectDrawSurface *surface, DWORD flags, IDirect3DRMDevice3 **device) PURE;
     STDMETHOD(CreateDeviceFromD3D)(THIS_ IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device,
             IDirect3DRMDevice3 **device) PURE;
     STDMETHOD(CreateDeviceFromClipper)(THIS_ IDirectDrawClipper *clipper, GUID *guid,
@@ -412,7 +412,7 @@
 #define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
 #define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
 #define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
+#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d,e)
 #define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
 #define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
 #define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
@@ -456,7 +456,7 @@
 #define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
 #define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
 #define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
+#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d,e)          (p)->CreateDeviceFromSurface(a,b,c,d,e)
 #define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
 #define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
 #define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
diff --git a/x86_64-w64-mingw32/include/d3drmobj.h b/x86_64-w64-mingw32/include/d3drmobj.h
index 810aa3d..ab4ad34 100644
--- a/x86_64-w64-mingw32/include/d3drmobj.h
+++ b/x86_64-w64-mingw32/include/d3drmobj.h
@@ -361,7 +361,7 @@
 #undef GetClassName
 #endif
 #define INTERFACE IDirect3DRMDevice
-DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
+DECLARE_INTERFACE_(IDirect3DRMDevice,IDirect3DRMObject)
 {
     /*** IUnknown methods ***/
     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
@@ -3285,7 +3285,7 @@
 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->SetDecalScale(a)
 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
-#define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
+#define IDirect3DRMTexture_SetDecalTransparentColor(p,a)    (p)->SetDecalTransparentColor(a)
 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
 #define IDirect3DRMTexture_GetImage(p)                      (p)->GetImage()
@@ -3293,7 +3293,7 @@
 #define IDirect3DRMTexture_GetColors(p)                     (p)->GetColors()
 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->GetDecalScale()
 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->GetDecalTransparency()
-#define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
+#define IDirect3DRMTexture_GetDecalTransparentColor(p)      (p)->GetDecalTransparentColor()
 #endif
 
 /*****************************************************************************
@@ -3405,7 +3405,7 @@
 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->SetDecalScale(a)
 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
-#define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
+#define IDirect3DRMTexture2_SetDecalTransparentColor(p,a)    (p)->SetDecalTransparentColor(a)
 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
 #define IDirect3DRMTexture2_GetImage(p)                      (p)->GetImage()
@@ -3413,7 +3413,7 @@
 #define IDirect3DRMTexture2_GetColors(p)                     (p)->GetColors()
 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->GetDecalScale()
 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->GetDecalTransparency()
-#define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
+#define IDirect3DRMTexture2_GetDecalTransparentColor(p)      (p)->GetDecalTransparentColor()
 /*** IDirect3DRMTexture2 methods ***/
 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->InitFromImage(a)
 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
@@ -3495,7 +3495,7 @@
 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
-#define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
+#define IDirect3DRMTexture3_SetDecalTransparentColor(p,a)    (p)->lpVtbl->SetDecalTransparentColor(p,a)
 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
 #define IDirect3DRMTexture3_GetImage(p)                      (p)->lpVtbl->GetImage(p)
@@ -3503,7 +3503,7 @@
 #define IDirect3DRMTexture3_GetColors(p)                     (p)->lpVtbl->GetColors(p)
 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
-#define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
+#define IDirect3DRMTexture3_GetDecalTransparentColor(p)      (p)->lpVtbl->GetDecalTransparentColor(p)
 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
diff --git a/x86_64-w64-mingw32/include/d3dx9anim.h b/x86_64-w64-mingw32/include/d3dx9anim.h
index 303286f..dcd4470 100644
--- a/x86_64-w64-mingw32/include/d3dx9anim.h
+++ b/x86_64-w64-mingw32/include/d3dx9anim.h
@@ -329,37 +329,37 @@
     STDMETHOD_(UINT, GetNumAnimationSets)(THIS) PURE;
     STDMETHOD(GetAnimationSet)(THIS_ UINT index, ID3DXAnimationSet **anim_set) PURE;
     STDMETHOD(GetAnimationSetByName)(THIS_ const char *name, ID3DXAnimationSet **anim_set) PURE;
-    STDMETHOD(AdvanceTime)(THIS_ double time_delta, ID3DXAnimationCallbackHandler **callback_handler) PURE;
+    STDMETHOD(AdvanceTime)(THIS_ double time_delta, ID3DXAnimationCallbackHandler *callback_handler) PURE;
     STDMETHOD(ResetTime)(THIS) PURE;
-    STDMETHOD_(DOUBLE, GetTime)(THIS) PURE;
+    STDMETHOD_(double, GetTime)(THIS) PURE;
     STDMETHOD(SetTrackAnimationSet)(THIS_ UINT track, ID3DXAnimationSet *anim_set) PURE;
     STDMETHOD(GetTrackAnimationSet)(THIS_ UINT track, ID3DXAnimationSet **anim_set) PURE;
-    STDMETHOD(GetTrackPriority)(THIS_ UINT track, D3DXPRIORITY_TYPE *priority) PURE;
-    STDMETHOD(SetTrackSpeed)(THIS_ UINT track, FLOAT speed) PURE;
-    STDMETHOD(SetTrackWeight)(THIS_ UINT track, FLOAT weight) PURE;
-    STDMETHOD(SetTrackPosition)(THIS_ UINT track, DOUBLE position) PURE;
+    STDMETHOD(SetTrackPriority)(THIS_ UINT track, D3DXPRIORITY_TYPE priority) PURE;
+    STDMETHOD(SetTrackSpeed)(THIS_ UINT track, float speed) PURE;
+    STDMETHOD(SetTrackWeight)(THIS_ UINT track, float weight) PURE;
+    STDMETHOD(SetTrackPosition)(THIS_ UINT track, double position) PURE;
     STDMETHOD(SetTrackEnable)(THIS_ UINT track, WINBOOL enable) PURE;
-    STDMETHOD(SetTrackDesc)(THIS_ UINT track, LPD3DXTRACK_DESC desc) PURE;
-    STDMETHOD(GetTrackDesc)(THIS_ UINT track, LPD3DXTRACK_DESC desc) PURE;
-    STDMETHOD(SetPriorityBlend)(THIS_ FLOAT blend_weight) PURE;
-    STDMETHOD_(FLOAT, GetPriorityBlend)(THIS) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackSpeed)(THIS_ UINT track, FLOAT new_speed,
-            DOUBLE start_time, DOUBLE duration, D3DXTRANSITION_TYPE transition) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackWeight)(THIS_ UINT track, FLOAT new_weight,
-            DOUBLE start_time, DOUBLE duration, D3DXTRANSITION_TYPE transition) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT track, DOUBLE new_position, DOUBLE start_time) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackEnable)(THIS_ UINT track, WINBOOL new_enable, DOUBLE start_time) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, KeyPriorityBlend)(THIS_ FLOAT new_blend_weight,
-            DOUBLE start_time, DOUBLE duration, D3DXTRANSITION_TYPE transition) PURE;
+    STDMETHOD(SetTrackDesc)(THIS_ UINT track, D3DXTRACK_DESC *desc) PURE;
+    STDMETHOD(GetTrackDesc)(THIS_ UINT track, D3DXTRACK_DESC *desc) PURE;
+    STDMETHOD(SetPriorityBlend)(THIS_ float blend_weight) PURE;
+    STDMETHOD_(float, GetPriorityBlend)(THIS) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackSpeed)(THIS_ UINT track, float new_speed,
+            double start_time, double duration, D3DXTRANSITION_TYPE transition) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackWeight)(THIS_ UINT track, float new_weight,
+            double start_time, double duration, D3DXTRANSITION_TYPE transition) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT track, double new_position, double start_time) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, KeyTrackEnable)(THIS_ UINT track, WINBOOL new_enable, double start_time) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, KeyPriorityBlend)(THIS_ float new_blend_weight,
+            double start_time, double duration, D3DXTRANSITION_TYPE transition) PURE;
     STDMETHOD(UnkeyEvent)(THIS_ D3DXEVENTHANDLE event) PURE;
     STDMETHOD(UnkeyAllTrackEvents)(THIS_ UINT track) PURE;
     STDMETHOD(UnkeyAllPriorityBlends)(THIS) PURE;
     STDMETHOD_(D3DXEVENTHANDLE, GetCurrentTrackEvent)(THIS_ UINT track, D3DXEVENT_TYPE event_type) PURE;
     STDMETHOD_(D3DXEVENTHANDLE, GetCurrentPriorityBlend)(THIS) PURE;
     STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingTrackEvent)(THIS_ UINT track, D3DXEVENTHANDLE event) PURE;
-    STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingPriorityBlend)(THIS_ D3DXEVENTHANDLE handle) PURE;
+    STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingPriorityBlend)(THIS_ D3DXEVENTHANDLE event) PURE;
     STDMETHOD(ValidateEvent)(THIS_ D3DXEVENTHANDLE event) PURE;
-    STDMETHOD(GetEventDesc)(THIS_ D3DXEVENTHANDLE event, LPD3DXEVENT_DESC desc) PURE;
+    STDMETHOD(GetEventDesc)(THIS_ D3DXEVENTHANDLE event, D3DXEVENT_DESC *desc) PURE;
     STDMETHOD(CloneAnimationController)(THIS_ UINT max_num_anim_outputs, UINT max_num_anim_sets,
             UINT max_num_tracks, UINT max_num_events, ID3DXAnimationController **anim_controller) PURE;
 };
diff --git a/x86_64-w64-mingw32/include/d3dx9effect.h b/x86_64-w64-mingw32/include/d3dx9effect.h
index 7056830..c936863 100644
--- a/x86_64-w64-mingw32/include/d3dx9effect.h
+++ b/x86_64-w64-mingw32/include/d3dx9effect.h
@@ -427,6 +427,8 @@
         ID3DXEffectCompiler **effectcompiler, ID3DXBuffer **parseerrors);
 #define D3DXCreateEffectCompilerFromResource __MINGW_NAME_AW(D3DXCreateEffectCompilerFromResource)
 
+HRESULT WINAPI D3DXDisassembleEffect(ID3DXEffect *effect, WINBOOL enable_color_code, ID3DXBuffer **disassembly);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/x86_64-w64-mingw32/include/d3dx9mesh.h b/x86_64-w64-mingw32/include/d3dx9mesh.h
index a66df54..9493f72 100644
--- a/x86_64-w64-mingw32/include/d3dx9mesh.h
+++ b/x86_64-w64-mingw32/include/d3dx9mesh.h
@@ -838,11 +838,11 @@
 HRESULT WINAPI D3DXSplitMesh(ID3DXMesh *mesh_in, const DWORD *adjacency_in, const DWORD max_size,
         const DWORD flags, DWORD *mesh_out_count, ID3DXBuffer **mesh_out, ID3DXBuffer **adjacency_out,
         ID3DXBuffer **face_remap_out, ID3DXBuffer **vertex_remap_out);
-HRESULT WINAPI D3DXTesselateNPatches(ID3DXMesh *mesh_in, const DWORD *adjacency_in, float segment_count,
+HRESULT WINAPI D3DXTessellateNPatches(ID3DXMesh *mesh_in, const DWORD *adjacency_in, float segment_count,
         WINBOOL quad_interp, ID3DXMesh **mesh_out, ID3DXBuffer **adjacency_out);
-HRESULT WINAPI D3DXTesselateRectPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
+HRESULT WINAPI D3DXTessellateRectPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
         const D3DVERTEXELEMENT9 *declaration, const D3DRECTPATCH_INFO *patch_info, struct ID3DXMesh *mesh);
-HRESULT WINAPI D3DXTesselateTriPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
+HRESULT WINAPI D3DXTessellateTriPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
         const D3DVERTEXELEMENT9 *declaration, const D3DTRIPATCH_INFO *patch_info, struct ID3DXMesh *mesh);
 HRESULT WINAPI D3DXTriPatchSize(const FLOAT *segment_count, DWORD *num_triangles,
         DWORD *num_vertices);
diff --git a/x86_64-w64-mingw32/include/d3dx9shader.h b/x86_64-w64-mingw32/include/d3dx9shader.h
index 6dd9f62..cd00a87 100644
--- a/x86_64-w64-mingw32/include/d3dx9shader.h
+++ b/x86_64-w64-mingw32/include/d3dx9shader.h
@@ -307,6 +307,43 @@
 
 typedef struct ID3DXInclude *LPD3DXINCLUDE;
 
+typedef struct _D3DXFRAGMENT_DESC
+{
+    const char *Name;
+    DWORD Target;
+
+} D3DXFRAGMENT_DESC, *LPD3DXFRAGMENT_DESC;
+
+
+DEFINE_GUID(IID_ID3DXFragmentLinker, 0x1a2c0cc2, 0xe5b6, 0x4ebc, 0x9e, 0x8d, 0x39, 0xe, 0x5, 0x78, 0x11, 0xb6);
+
+#define INTERFACE ID3DXFragmentLinker
+DECLARE_INTERFACE_(ID3DXFragmentLinker, IUnknown)
+{
+    STDMETHOD(QueryInterface)(THIS_ REFIID iid, void **ppv) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
+    STDMETHOD_(UINT, GetNumberOfFragments)(THIS) PURE;
+
+    STDMETHOD_(D3DXHANDLE, GetFragmentHandleByIndex)(THIS_ UINT index) PURE;
+    STDMETHOD_(D3DXHANDLE, GetFragmentHandleByName)(THIS_ const char *name) PURE;
+    STDMETHOD(GetFragmentDesc)(THIS_ D3DXHANDLE name, D3DXFRAGMENT_DESC *frag_desc) PURE;
+
+    STDMETHOD(AddFragments)(THIS_ const DWORD *fragments) PURE;
+
+    STDMETHOD(GetAllFragments)(THIS_ ID3DXBuffer **buffer) PURE;
+    STDMETHOD(GetFragment)(THIS_ D3DXHANDLE name, ID3DXBuffer **buffer) PURE;
+
+    STDMETHOD(LinkShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragmenthandles, UINT fragments, ID3DXBuffer **buffer, ID3DXBuffer **errors) PURE;
+    STDMETHOD(LinkVertexShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragment_handles, UINT fragments, IDirect3DVertexShader9 **shader, ID3DXBuffer **errors) PURE;
+    STDMETHOD(LinkPixelShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragment_handles, UINT fragments, IDirect3DPixelShader9 **shader, ID3DXBuffer **errors) PURE;
+
+    STDMETHOD(ClearCache)(THIS) PURE;
+};
+#undef INTERFACE
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -379,6 +416,9 @@
 
 HRESULT WINAPI D3DXCreateTextureShader(const DWORD *pFunction, ID3DXTextureShader **ppTextureShader);
 
+HRESULT WINAPI D3DXCreateFragmentLinker(IDirect3DDevice9 *device, UINT size, ID3DXFragmentLinker **linker);
+HRESULT WINAPI D3DXCreateFragmentLinkerEx(IDirect3DDevice9 *device, UINT size, DWORD flags, ID3DXFragmentLinker **linker);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/x86_64-w64-mingw32/include/dcomp.h b/x86_64-w64-mingw32/include/dcomp.h
new file mode 100644
index 0000000..0b4c362
--- /dev/null
+++ b/x86_64-w64-mingw32/include/dcomp.h
@@ -0,0 +1,287 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _DCOMP_H_
+#define _DCOMP_H_
+
+#include <d2dbasetypes.h>
+#ifndef D3DMATRIX_DEFINED
+#include <d3d9types.h>
+#endif
+#include <d2d1_1.h>
+#include <winapifamily.h>
+
+#include <dcomptypes.h>
+#include <dcompanimation.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#undef INTERFACE
+#define INTERFACE IDCompositionSurface
+DECLARE_INTERFACE_IID_(IDCompositionSurface,IUnknown,"bb8a4953-2c99-4f5a-96f5-4819027fa3ac")
+{
+    STDMETHOD(BeginDraw)(THIS_ const RECT*,REFIID,void**,POINT*) PURE;
+    STDMETHOD(EndDraw)(THIS) PURE;
+    STDMETHOD(SuspendDraw)(THIS) PURE;
+    STDMETHOD(ResumeDraw)(THIS) PURE;
+    STDMETHOD(Scroll)(THIS_ const RECT*,const RECT*,int,int) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionVirtualSurface
+DECLARE_INTERFACE_IID_(IDCompositionVirtualSurface,IDCompositionSurface,"ae471c51-5f53-4a24-8d3e-d0c39c30b3f0")
+{
+    STDMETHOD(Resize)(THIS_ UINT,UINT) PURE;
+    STDMETHOD(Trim)(THIS_ const RECT*,UINT) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionEffect
+DECLARE_INTERFACE_IID_(IDCompositionEffect,IUnknown,"ec81b08f-bfcb-4e8d-b193-a915587999e8")
+{
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionTransform3D
+DECLARE_INTERFACE_IID_(IDCompositionTransform3D,IDCompositionEffect,"71185722-246b-41f2-aad1-0443f7f4bfc2")
+{
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionTransform
+DECLARE_INTERFACE_IID_(IDCompositionTransform,IDCompositionTransform3D,"fd55faa7-37e0-4c20-95d2-9be45bc33f55")
+{
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionTranslateTransform
+DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform,IDCompositionTransform,"06791122-c6f0-417d-8323-269e987f5954")
+{
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionScaleTransform
+DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde914-40ef-45ef-bd51-68b037c339f9")
+{
+    STDMETHOD(SetScaleX)(THIS_ float) PURE;
+    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleY)(THIS_ float) PURE;
+    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionRotateTransform
+DECLARE_INTERFACE_IID_(IDCompositionRotateTransform,IDCompositionTransform,"641ed83c-ae96-46c5-90dc-32774cc5c6d5")
+{
+    STDMETHOD(SetAngle)(THIS_ float) PURE;
+    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionSkewTransform
+DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa735-dcdb-4c72-9c61-0591f58889ee")
+{
+    STDMETHOD(SetAngleX)(THIS_ float) PURE;
+    STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAngleY)(THIS_ float) PURE;
+    STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionMatrixTransform
+DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform,IDCompositionTransform,"16cdff07-c503-419c-83f2-0965c7af1fa6")
+{
+    STDMETHOD(SetMatrix)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionTranslateTransform3D
+DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform3D,IDCompositionTransform3D,"91636d4b-9ba1-4532-aaf7-e3344994d788")
+{
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionScaleTransform3D
+DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2a9e9ead-364b-4b15-a7c4-a1997f78b389")
+{
+    STDMETHOD(SetScaleX)(THIS_ float) PURE;
+    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleY)(THIS_ float) PURE;
+    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleZ)(THIS_ float) PURE;
+    STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionRotateTransform3D
+DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
+{
+    STDMETHOD(SetAngle)(THIS_ float) PURE;
+    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisX)(THIS_ float) PURE;
+    STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisY)(THIS_ float) PURE;
+    STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisZ)(THIS_ float) PURE;
+    STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionMatrixTransform3D
+DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform3D,IDCompositionTransform3D,"4b3363f0-643b-41b7-b6e0-ccf22d34467c")
+{
+    STDMETHOD(SetMatrix)(THIS_ const D3DMATRIX&) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionEffectGroup
+DECLARE_INTERFACE_IID_(IDCompositionEffectGroup,IDCompositionEffect,"a7929a74-e6b2-4bd6-8b95-4040119ca34d")
+{
+    STDMETHOD(SetOpacity)(THIS_ float) PURE;
+    STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTransform3D)(THIS_ IDCompositionTransform3D*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionClip
+DECLARE_INTERFACE_IID_(IDCompositionClip,IUnknown,"64ac3703-9d3f-45ec-a109-7cac0e7a13a7")
+{
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionRectangleClip
+DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
+{
+    STDMETHOD(SetLeft)(THIS_ float) PURE;
+    STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTop)(THIS_ float) PURE;
+    STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetRight)(THIS_ float) PURE;
+    STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottom)(THIS_ float) PURE;
+    STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionTarget
+DECLARE_INTERFACE_IID_(IDCompositionTarget,IUnknown,"eacdd04c-117e-4e17-88f4-d1b12b0e3d89")
+{
+    STDMETHOD(SetRoot)(THIS_ IDCompositionVisual*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDCompositionDevice
+DECLARE_INTERFACE_IID_(IDCompositionDevice,IUnknown,"c37ea93a-e7aa-450d-b16f-9746cb0407f3")
+{
+    STDMETHOD(Commit)(THIS) PURE;
+    STDMETHOD(WaitForCommitCompletion)(THIS) PURE;
+    STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE;
+    STDMETHOD(CreateTargetForHwnd)(THIS_ HWND,BOOL,IDCompositionTarget**) PURE;
+    STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual**) PURE;
+    STDMETHOD(CreateSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionSurface**) PURE;
+    STDMETHOD(CreateVirtualSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionVirtualSurface**) PURE;
+    STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE,IUnknown**) PURE;
+    STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND,IUnknown**) PURE;
+    STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE;
+    STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE;
+    STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE;
+    STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE;
+    STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE;
+    STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**,UINT,IDCompositionTransform**) PURE;
+    STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE;
+    STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE;
+    STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE;
+    STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE;
+    STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**,UINT,IDCompositionTransform3D**) PURE;
+    STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE;
+    STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE;
+    STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE;
+    STDMETHOD(CheckDeviceState)(THIS_ BOOL*) PURE;
+};
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionDevice,0xc37ea93a,0xe7aa,0x450d,0xb1,0x6f,0x97,0x46,0xcb,0x04,0x07,0xf3);
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDCompositionVisual
+DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3")
+{
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
+    STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
+    STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE;
+    STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE;
+    STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE;
+    STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE;
+    STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
+    STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
+    STDMETHOD(SetContent)(THIS_ IUnknown*) PURE;
+    STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE;
+    STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE;
+    STDMETHOD(RemoveAllVisuals)(THIS_) PURE;
+    STDMETHOD(SetCompositeMode)(THIS_ DCOMPOSITION_COMPOSITE_MODE) PURE;
+};
+
+#endif
+#endif /* _DCOMP_H_ */
diff --git a/x86_64-w64-mingw32/include/dcompanimation.h b/x86_64-w64-mingw32/include/dcompanimation.h
new file mode 100644
index 0000000..20df083
--- /dev/null
+++ b/x86_64-w64-mingw32/include/dcompanimation.h
@@ -0,0 +1,250 @@
+/*** Autogenerated by WIDL 1.6 from include/dcompanimation.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __dcompanimation_h__
+#define __dcompanimation_h__
+
+/* Forward declarations */
+
+#ifndef __IDCompositionAnimation_FWD_DEFINED__
+#define __IDCompositionAnimation_FWD_DEFINED__
+typedef interface IDCompositionAnimation IDCompositionAnimation;
+#endif
+
+/* Headers for imported files */
+
+#include <wtypes.h>
+#include <unknwn.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IDCompositionAnimation interface
+ */
+#ifndef __IDCompositionAnimation_INTERFACE_DEFINED__
+#define __IDCompositionAnimation_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDCompositionAnimation, 0xcbfd91d9, 0x51b2, 0x45e4, 0xb3,0xde, 0xd1,0x9c,0xcf,0xb8,0x63,0xc5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cbfd91d9-51b2-45e4-b3de-d19ccfb863c5")
+IDCompositionAnimation : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAbsoluteBeginTime(
+        LARGE_INTEGER a) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddCubic(
+        double a,
+        float b,
+        float c,
+        float d,
+        float e) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddSinusoidal(
+        double a,
+        float b,
+        float c,
+        float d,
+        float e) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddRepeat(
+        double a,
+        double b) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE End(
+        double a,
+        float b) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionAnimation, 0xcbfd91d9, 0x51b2, 0x45e4, 0xb3,0xde, 0xd1,0x9c,0xcf,0xb8,0x63,0xc5)
+#endif
+#else
+typedef struct IDCompositionAnimationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDCompositionAnimation* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDCompositionAnimation* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDCompositionAnimation* This);
+
+    /*** IDCompositionAnimation methods ***/
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IDCompositionAnimation* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAbsoluteBeginTime)(
+        IDCompositionAnimation* This,
+        LARGE_INTEGER a);
+
+    HRESULT (STDMETHODCALLTYPE *AddCubic)(
+        IDCompositionAnimation* This,
+        double a,
+        float b,
+        float c,
+        float d,
+        float e);
+
+    HRESULT (STDMETHODCALLTYPE *AddSinusoidal)(
+        IDCompositionAnimation* This,
+        double a,
+        float b,
+        float c,
+        float d,
+        float e);
+
+    HRESULT (STDMETHODCALLTYPE *AddRepeat)(
+        IDCompositionAnimation* This,
+        double a,
+        double b);
+
+    HRESULT (STDMETHODCALLTYPE *End)(
+        IDCompositionAnimation* This,
+        double a,
+        float b);
+
+    END_INTERFACE
+} IDCompositionAnimationVtbl;
+interface IDCompositionAnimation {
+    CONST_VTBL IDCompositionAnimationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDCompositionAnimation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDCompositionAnimation_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDCompositionAnimation_Release(This) (This)->lpVtbl->Release(This)
+/*** IDCompositionAnimation methods ***/
+#define IDCompositionAnimation_Reset(This) (This)->lpVtbl->Reset(This)
+#define IDCompositionAnimation_SetAbsoluteBeginTime(This,a) (This)->lpVtbl->SetAbsoluteBeginTime(This,a)
+#define IDCompositionAnimation_AddCubic(This,a,b,c,d,e) (This)->lpVtbl->AddCubic(This,a,b,c,d,e)
+#define IDCompositionAnimation_AddSinusoidal(This,a,b,c,d,e) (This)->lpVtbl->AddSinusoidal(This,a,b,c,d,e)
+#define IDCompositionAnimation_AddRepeat(This,a,b) (This)->lpVtbl->AddRepeat(This,a,b)
+#define IDCompositionAnimation_End(This,a,b) (This)->lpVtbl->End(This,a,b)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDCompositionAnimation_QueryInterface(IDCompositionAnimation* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDCompositionAnimation_AddRef(IDCompositionAnimation* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDCompositionAnimation_Release(IDCompositionAnimation* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDCompositionAnimation methods ***/
+static FORCEINLINE HRESULT IDCompositionAnimation_Reset(IDCompositionAnimation* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IDCompositionAnimation_SetAbsoluteBeginTime(IDCompositionAnimation* This,LARGE_INTEGER a) {
+    return This->lpVtbl->SetAbsoluteBeginTime(This,a);
+}
+static FORCEINLINE HRESULT IDCompositionAnimation_AddCubic(IDCompositionAnimation* This,double a,float b,float c,float d,float e) {
+    return This->lpVtbl->AddCubic(This,a,b,c,d,e);
+}
+static FORCEINLINE HRESULT IDCompositionAnimation_AddSinusoidal(IDCompositionAnimation* This,double a,float b,float c,float d,float e) {
+    return This->lpVtbl->AddSinusoidal(This,a,b,c,d,e);
+}
+static FORCEINLINE HRESULT IDCompositionAnimation_AddRepeat(IDCompositionAnimation* This,double a,double b) {
+    return This->lpVtbl->AddRepeat(This,a,b);
+}
+static FORCEINLINE HRESULT IDCompositionAnimation_End(IDCompositionAnimation* This,double a,float b) {
+    return This->lpVtbl->End(This,a,b);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_Reset_Proxy(
+    IDCompositionAnimation* This);
+void __RPC_STUB IDCompositionAnimation_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_SetAbsoluteBeginTime_Proxy(
+    IDCompositionAnimation* This,
+    LARGE_INTEGER a);
+void __RPC_STUB IDCompositionAnimation_SetAbsoluteBeginTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_AddCubic_Proxy(
+    IDCompositionAnimation* This,
+    double a,
+    float b,
+    float c,
+    float d,
+    float e);
+void __RPC_STUB IDCompositionAnimation_AddCubic_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_AddSinusoidal_Proxy(
+    IDCompositionAnimation* This,
+    double a,
+    float b,
+    float c,
+    float d,
+    float e);
+void __RPC_STUB IDCompositionAnimation_AddSinusoidal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_AddRepeat_Proxy(
+    IDCompositionAnimation* This,
+    double a,
+    double b);
+void __RPC_STUB IDCompositionAnimation_AddRepeat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDCompositionAnimation_End_Proxy(
+    IDCompositionAnimation* This,
+    double a,
+    float b);
+void __RPC_STUB IDCompositionAnimation_End_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDCompositionAnimation_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __dcompanimation_h__ */
diff --git a/x86_64-w64-mingw32/include/dcomptypes.h b/x86_64-w64-mingw32/include/dcomptypes.h
new file mode 100644
index 0000000..b8a09ed
--- /dev/null
+++ b/x86_64-w64-mingw32/include/dcomptypes.h
@@ -0,0 +1,44 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _DCOMPTYPES_H_
+#define _DCOMPTYPES_H_
+
+#include <dxgitype.h>
+#include <dxgi1_2.h>
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE {
+    DCOMPOSITION_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
+    DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR = 1,
+    DCOMPOSITION_BITMAP_INTERPOLATION_MODE_INHERIT = 0xffffffff
+};
+
+enum DCOMPOSITION_BORDER_MODE {
+    DCOMPOSITION_BORDER_MODE_SOFT = 0,
+    DCOMPOSITION_BORDER_MODE_HARD = 1,
+    DCOMPOSITION_BORDER_MODE_INHERIT = 0xffffffff
+};
+
+enum DCOMPOSITION_COMPOSITE_MODE {
+    DCOMPOSITION_COMPOSITE_MODE_SOURCE_OVER = 0,
+    DCOMPOSITION_COMPOSITE_MODE_DESTINATION_INVERT = 1,
+    DCOMPOSITION_COMPOSITE_MODE_MIN_BLEND = 2,
+    DCOMPOSITION_COMPOSITE_MODE_INHERIT = 0xffffffff
+};
+
+typedef struct {
+    LARGE_INTEGER lastFrameTime;
+    DXGI_RATIONAL currentCompositionRate;
+    LARGE_INTEGER currentTime;
+    LARGE_INTEGER timeFrequency;
+    LARGE_INTEGER nextEstimatedFrameTime;
+} DCOMPOSITION_FRAME_STATISTICS;
+
+#endif
+#endif /* _DCOMPTYPES_H_ */
diff --git a/x86_64-w64-mingw32/include/ddk/ntimage.h b/x86_64-w64-mingw32/include/ddk/ntimage.h
index a259038..9590b22 100644
--- a/x86_64-w64-mingw32/include/ddk/ntimage.h
+++ b/x86_64-w64-mingw32/include/ddk/ntimage.h
@@ -424,13 +424,16 @@
 //
 // Dll Characteristics
 //
+#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA       0x0020
 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE          0x0040
 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY       0x0080
 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT             0x0100
 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION          0x0200
 #define IMAGE_DLLCHARACTERISTICS_NO_SEH                0x0400
 #define IMAGE_DLLCHARACTERISTICS_NO_BIND               0x0800
+#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER          0x1000
 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER            0x2000
+#define IMAGE_DLLCHARACTERISTICS_GUARD_CF              0x4000
 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
 
 //
diff --git a/x86_64-w64-mingw32/include/devicetopology.h b/x86_64-w64-mingw32/include/devicetopology.h
index af8da24..9a455cc 100644
--- a/x86_64-w64-mingw32/include/devicetopology.h
+++ b/x86_64-w64-mingw32/include/devicetopology.h
@@ -1230,9 +1230,9 @@
 #ifndef __IAudioMute_INTERFACE_DEFINED__
 #define __IAudioMute_INTERFACE_DEFINED__
 
-DEFINE_GUID(IID_IAudioMute, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab);
+DEFINE_GUID(IID_IAudioMute, 0xdf45aeea, 0xb74a, 0x4b6b, 0xaf,0xad, 0x23,0x66,0xb6,0xaa,0x01,0x2e);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-MIDL_INTERFACE("bb515f69-94a7-429e-8b9c-271b3f11a3ab")
+MIDL_INTERFACE("df45aeea-b74a-4b6b-afad-2366b6aa012e")
 IAudioMute : public IUnknown
 {
     virtual HRESULT STDMETHODCALLTYPE SetMute(
@@ -1244,7 +1244,7 @@
 
 };
 #ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IAudioMute, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab)
+__CRT_UUID_DECL(IAudioMute, 0xdf45aeea, 0xb74a, 0x4b6b, 0xaf,0xad, 0x23,0x66,0xb6,0xaa,0x01,0x2e)
 #endif
 #else
 typedef struct IAudioMuteVtbl {
@@ -1702,9 +1702,9 @@
 #ifndef __IAudioAutoGainControl_INTERFACE_DEFINED__
 #define __IAudioAutoGainControl_INTERFACE_DEFINED__
 
-DEFINE_GUID(IID_IAudioAutoGainControl, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab);
+DEFINE_GUID(IID_IAudioAutoGainControl, 0x85401fd4, 0x6de4, 0x4b9d, 0x98,0x69, 0x2d,0x67,0x53,0xa8,0x2f,0x3c);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-MIDL_INTERFACE("bb515f69-94a7-429e-8b9c-271b3f11a3ab")
+MIDL_INTERFACE("85401fd4-6de4-4b9d-9869-2d6753a82f3c")
 IAudioAutoGainControl : public IUnknown
 {
     virtual HRESULT STDMETHODCALLTYPE GetEnabled(
@@ -1716,7 +1716,7 @@
 
 };
 #ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IAudioAutoGainControl, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab)
+__CRT_UUID_DECL(IAudioAutoGainControl, 0x85401fd4, 0x6de4, 0x4b9d, 0x98,0x69, 0x2d,0x67,0x53,0xa8,0x2f,0x3c)
 #endif
 #else
 typedef struct IAudioAutoGainControlVtbl {
@@ -3583,6 +3583,7 @@
 #endif  /* __IDeviceTopology_INTERFACE_DEFINED__ */
 
 
+DEFINE_GUID(LIBID_DevTopologyLib, 0x51b9a01d, 0x8181, 0x4363, 0xb5,0x9c, 0xe6,0x78,0xf4,0x76,0xdd,0x0e);
 
 /*****************************************************************************
  * DeviceTopology coclass
diff --git a/x86_64-w64-mingw32/include/dimm.h b/x86_64-w64-mingw32/include/dimm.h
index 261189c..c97f1b7 100644
--- a/x86_64-w64-mingw32/include/dimm.h
+++ b/x86_64-w64-mingw32/include/dimm.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from dimm.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/dimm.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/dinput.h b/x86_64-w64-mingw32/include/dinput.h
index b575480..14438f7 100644
--- a/x86_64-w64-mingw32/include/dinput.h
+++ b/x86_64-w64-mingw32/include/dinput.h
@@ -23,6 +23,7 @@
 #include <objbase.h>
 #include <_mingw_dxhelper.h>
 
+#define DIRECTINPUT_HEADER_VERSION	0x0800
 #ifndef DIRECTINPUT_VERSION
 #define DIRECTINPUT_VERSION	0x0800
 #endif
diff --git a/x86_64-w64-mingw32/include/driverspecs.h b/x86_64-w64-mingw32/include/driverspecs.h
index b7d3268..2fa89a1 100644
--- a/x86_64-w64-mingw32/include/driverspecs.h
+++ b/x86_64-w64-mingw32/include/driverspecs.h
@@ -28,3 +28,6 @@
 
 #define __deref_out_ecount(Size)
 
+#define __drv_aliasesMem
+#define __drv_allocatesMem(kind)
+#define __drv_freesMem(kind)
diff --git a/x86_64-w64-mingw32/include/dvdmedia.h b/x86_64-w64-mingw32/include/dvdmedia.h
index 32c22fc..daf1c9d 100644
--- a/x86_64-w64-mingw32/include/dvdmedia.h
+++ b/x86_64-w64-mingw32/include/dvdmedia.h
@@ -51,4 +51,18 @@
     DWORD dwSequenceHeader[1];
 } MPEG2VIDEOINFO;
 
+#define AMINTERLACE_IsInterlaced          0x0001
+#define AMINTERLACE_1FieldPerSample       0x0002
+#define AMINTERLACE_Field1First           0x0004
+#define AMINTERLACE_UNUSED                0x0008
+#define AMINTERLACE_FieldPatField1Only    0x0000
+#define AMINTERLACE_FieldPatField2Only    0x0010
+#define AMINTERLACE_FieldPatBothRegular   0x0020
+#define AMINTERLACE_FieldPatBothIrregular 0x0030
+#define AMINTERLACE_FieldPatternMask      0x0030
+#define AMINTERLACE_DisplayModeBobOnly    0x0000
+#define AMINTERLACE_DisplayModeWeaveOnly  0x0040
+#define AMINTERLACE_DisplayModeBobOrWeave 0x0080
+#define AMINTERLACE_DisplayModeMask       0x00c0
+
 #endif /* __DVDMEDIA_H__ */
diff --git a/x86_64-w64-mingw32/include/dwrite_1.h b/x86_64-w64-mingw32/include/dwrite_1.h
index 1630881..989ee28 100644
--- a/x86_64-w64-mingw32/include/dwrite_1.h
+++ b/x86_64-w64-mingw32/include/dwrite_1.h
@@ -14,6 +14,12 @@
     DWRITE_OUTLINE_THRESHOLD_ALIASED
 };
 
+enum DWRITE_TEXT_ANTIALIAS_MODE
+{
+    DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE,
+    DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE
+};
+
 struct DWRITE_CARET_METRICS {
     INT16 slopeRise;
     INT16 slopeRun;
@@ -144,5 +150,183 @@
 
 __CRT_UUID_DECL(IDWriteFontFace1, 0xa71efdb4,0x9fdb,0x4838,0xad,0x90,0xcf,0xc3,0xbe,0x8c,0x3d,0xaf);
 
+#undef  INTERFACE
+#define INTERFACE IDWriteRenderingParams1
+DECLARE_INTERFACE_(IDWriteRenderingParams1,IDWriteRenderingParams)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteRenderingParams methods */
+    STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
+    STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
+    STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
+#endif
+
+    /* IDWriteRenderingParams1 methods */
+    STDMETHOD_(FLOAT, GetGrayscaleEnhancedContrast)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteRenderingParams1, 0x94413cf4,0xa6fc,0x4248,0x8b,0x50,0x66,0x74,0x34,0x8f,0xca,0xd3)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory1
+DECLARE_INTERFACE_(IDWriteFactory1,IDWriteFactory)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomFontCollection)(THIS_
+        IDWriteFontCollectionLoader *collectionLoader,
+        void const *collectionKey,
+        UINT32 collectionKeySize,
+        IDWriteFontCollection **fontCollection) PURE;
+
+    STDMETHOD(RegisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(UnregisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(CreateFontFileReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateCustomFontFileReference)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileLoader *fontFileLoader,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        DWRITE_FONT_FACE_TYPE fontFaceType,
+        UINT32 numberOfFiles,
+        IDWriteFontFile *const *fontFiles,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
+        IDWriteFontFace **fontFace) PURE;
+
+    STDMETHOD(CreateRenderingParams)(THIS_
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateMonitorRenderingParams)(THIS_
+        HMONITOR monitor,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(RegisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(UnregisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(CreateTypography)(THIS_
+        IDWriteTypography **typography) PURE;
+
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop **gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT layoutWidth,
+        FLOAT layoutHeight,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        WINBOOL useGdiNatural,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
+        IDWriteTextFormat *textFormat,
+        IDWriteInlineObject **trimmingSign) PURE;
+
+    STDMETHOD(CreateTextAnalyzer)(THIS_
+        IDWriteTextAnalyzer **textAnalyzer) PURE;
+
+    STDMETHOD(CreateNumberSubstitution)(THIS_
+        DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
+        WCHAR const *localeName,
+        WINBOOL ignoreUserOverride,
+        IDWriteNumberSubstitution **numberSubstitution) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+#endif
+
+    /* IDWriteFactory1 methods */
+    STDMETHOD(GetEudcFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT enhancedContrastGrayscale,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams1 **renderingParams) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory::CreateCustomRenderingParams;
+#endif
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFactory1, 0x30572f99,0xdac6,0x41db,0xa1,0x6e,0x04,0x86,0x30,0x7e,0x60,0x6a)
 
 #endif /* DWRITE_1_H_INCLUDED */
diff --git a/x86_64-w64-mingw32/include/dwrite_2.h b/x86_64-w64-mingw32/include/dwrite_2.h
new file mode 100644
index 0000000..cbe96a6
--- /dev/null
+++ b/x86_64-w64-mingw32/include/dwrite_2.h
@@ -0,0 +1,367 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef DWRITE_2_H_INCLUDED
+#define DWRITE_2_H_INCLUDED
+
+#include <dwrite_1.h>
+
+typedef enum DWRITE_GRID_FIT_MODE
+{
+    DWRITE_GRID_FIT_MODE_DEFAULT,
+    DWRITE_GRID_FIT_MODE_DISABLED,
+    DWRITE_GRID_FIT_MODE_ENABLED
+} DWRITE_GRID_FIT_MODE;
+
+#ifndef D3DCOLORVALUE_DEFINED
+#define D3DCOLORVALUE_DEFINED
+typedef struct _D3DCOLORVALUE {
+    union {
+        FLOAT r;
+        FLOAT dvR;
+    } DUMMYUNIONNAME1;
+    union {
+        FLOAT g;
+        FLOAT dvG;
+    } DUMMYUNIONNAME2;
+    union {
+        FLOAT b;
+        FLOAT dvB;
+    } DUMMYUNIONNAME3;
+    union {
+        FLOAT a;
+        FLOAT dvA;
+    } DUMMYUNIONNAME4;
+} D3DCOLORVALUE,*LPD3DCOLORVALUE;
+#endif /* D3DCOLORVALUE_DEFINED */
+
+typedef D3DCOLORVALUE DWRITE_COLOR_F;
+
+typedef struct DWRITE_COLOR_GLYPH_RUN
+{
+    DWRITE_GLYPH_RUN glyphRun;
+    DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
+    FLOAT baselineOriginX;
+    FLOAT baselineOriginY;
+    DWRITE_COLOR_F runColor;
+    UINT16 paletteIndex;
+} DWRITE_COLOR_GLYPH_RUN;
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFallback
+DECLARE_INTERFACE_(IDWriteFontFallback,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    STDMETHOD(MapCharacters)(THIS_
+        IDWriteTextAnalysisSource *analysisSource,
+        UINT32 textPosition,
+        UINT32 textLength,
+        IDWriteFontCollection *baseFontCollection,
+        wchar_t const *baseFamilyName,
+        DWRITE_FONT_WEIGHT baseWeight,
+        DWRITE_FONT_STYLE baseStyle,
+        DWRITE_FONT_STRETCH baseStretch,
+        UINT32 *mappedLength,
+        IDWriteFont **mappedFont,
+        FLOAT *scale) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontFallback, 0xefa008f9,0xf7a1,0x48bf,0xb0,0x5c,0xf2,0x24,0x71,0x3c,0xc0,0xff)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFallbackBuilder
+DECLARE_INTERFACE_(IDWriteFontFallbackBuilder,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    STDMETHOD(AddMapping)(THIS_
+        DWRITE_UNICODE_RANGE const *ranges,
+        UINT32 rangesCount,
+        WCHAR const **targetFamilyNames,
+        UINT32 targetFamilyNamesCount,
+        IDWriteFontCollection *fontCollection __MINGW_DEF_ARG_VAL(NULL),
+        WCHAR const *localeName __MINGW_DEF_ARG_VAL(NULL),
+        WCHAR const *baseFamilyName __MINGW_DEF_ARG_VAL(NULL),
+        FLOAT scale __MINGW_DEF_ARG_VAL(1.0f)) PURE;
+
+    STDMETHOD(AddMappings)(THIS_
+        IDWriteFontFallback *fontFallback) PURE;
+
+    STDMETHOD(CreateFontFallback)(THIS_
+        IDWriteFontFallback **fontFallback) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontFallbackBuilder, 0xfd882d06,0x8aba,0x4fb8,0xb8,0x49,0x8b,0xe8,0xb7,0x3e,0x14,0xde)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteColorGlyphRunEnumerator
+DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    STDMETHOD(MoveNext)(THIS_
+        BOOL *hasRun) PURE;
+
+    STDMETHOD(GetCurrentRun)(THIS_
+        DWRITE_COLOR_GLYPH_RUN const **colorGlyphRun) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator, 0xd31fbe17,0xf157,0x41a2,0x8d,0x24,0xcb,0x77,0x9e,0x05,0x60,0xe8)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteRenderingParams2
+DECLARE_INTERFACE_(IDWriteRenderingParams2,IDWriteRenderingParams1)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteRenderingParams methods */
+    STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
+    STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
+    STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
+
+    /* IDWriteRenderingParams1 methods */
+    STDMETHOD_(FLOAT, GetGrayscaleEnhancedContrast)(THIS) PURE;
+#endif
+
+    /* IDWriteRenderingParams2 methods */
+    STDMETHOD_(DWRITE_GRID_FIT_MODE, GetGridFitMode)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteRenderingParams2, 0xf9d711c3,0x9777,0x40ae,0x87,0xe8,0x3e,0x5a,0xf9,0xbf,0x09,0x48)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory2
+DECLARE_INTERFACE_(IDWriteFactory2,IDWriteFactory1)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomFontCollection)(THIS_
+        IDWriteFontCollectionLoader *collectionLoader,
+        void const *collectionKey,
+        UINT32 collectionKeySize,
+        IDWriteFontCollection **fontCollection) PURE;
+
+    STDMETHOD(RegisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(UnregisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(CreateFontFileReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateCustomFontFileReference)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileLoader *fontFileLoader,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        DWRITE_FONT_FACE_TYPE fontFaceType,
+        UINT32 numberOfFiles,
+        IDWriteFontFile *const *fontFiles,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
+        IDWriteFontFace **fontFace) PURE;
+
+    STDMETHOD(CreateRenderingParams)(THIS_
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateMonitorRenderingParams)(THIS_
+        HMONITOR monitor,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(RegisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(UnregisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(CreateTypography)(THIS_
+        IDWriteTypography **typography) PURE;
+
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop **gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT layoutWidth,
+        FLOAT layoutHeight,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        WINBOOL useGdiNatural,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
+        IDWriteTextFormat *textFormat,
+        IDWriteInlineObject **trimmingSign) PURE;
+
+    STDMETHOD(CreateTextAnalyzer)(THIS_
+        IDWriteTextAnalyzer **textAnalyzer) PURE;
+
+    STDMETHOD(CreateNumberSubstitution)(THIS_
+        DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
+        WCHAR const *localeName,
+        WINBOOL ignoreUserOverride,
+        IDWriteNumberSubstitution **numberSubstitution) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory1 methods */
+    STDMETHOD(GetEudcFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT enhancedContrastGrayscale,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams1 **renderingParams) PURE;
+#endif
+
+    /* IDWriteFactory2 methods */
+    STDMETHOD(GetSystemFontFallback)(THIS_
+        IDWriteFontFallback **fontFallback) PURE;
+
+    STDMETHOD(CreateFontFallbackBuilder)(THIS_
+        IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
+
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldToDeviceTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams2 **renderingParams) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory::CreateCustomRenderingParams;
+    using IDWriteFactory1::CreateCustomRenderingParams;
+#endif
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory::CreateGlyphRunAnalysis;
+#endif
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFactory2, 0x0439fc60,0xca44,0x4994,0x8d,0xee,0x3a,0x9a,0xf7,0xb7,0x32,0xec)
+
+#endif /* DWRITE_2_H_INCLUDED */
diff --git a/x86_64-w64-mingw32/include/dxgi.h b/x86_64-w64-mingw32/include/dxgi.h
index 88e76a2..b6530c7 100644
--- a/x86_64-w64-mingw32/include/dxgi.h
+++ b/x86_64-w64-mingw32/include/dxgi.h
@@ -135,6 +135,10 @@
 
 #define DXGI_USAGE_READ_ONLY (0x100)
 
+#define DXGI_USAGE_DISCARD_ON_PRESENT (0x200)
+
+#define DXGI_USAGE_UNORDERED_ACCESS (0x400)
+
 #define DXGI_ENUM_MODES_INTERLACED (1)
 
 #define DXGI_ENUM_MODES_SCALING (2)
@@ -142,7 +146,8 @@
 typedef enum DXGI_SWAP_EFFECT {
     DXGI_SWAP_EFFECT_DISCARD = 0,
     DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
-    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3
+    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
+    DXGI_SWAP_EFFECT_FLIP_DISCARD = 4
 } DXGI_SWAP_EFFECT;
 typedef enum DXGI_RESIDENCY {
     DXGI_RESIDENCY_FULLY_RESIDENT = 1,
diff --git a/x86_64-w64-mingw32/include/dxgi.idl b/x86_64-w64-mingw32/include/dxgi.idl
index 009a6b5..cc98970 100644
--- a/x86_64-w64-mingw32/include/dxgi.idl
+++ b/x86_64-w64-mingw32/include/dxgi.idl
@@ -60,6 +60,8 @@
 const DXGI_USAGE DXGI_USAGE_BACK_BUFFER             = 0x40L;
 const DXGI_USAGE DXGI_USAGE_SHARED                  = 0x80L;
 const DXGI_USAGE DXGI_USAGE_READ_ONLY               = 0x100L;
+const DXGI_USAGE DXGI_USAGE_DISCARD_ON_PRESENT      = 0x200L;
+const DXGI_USAGE DXGI_USAGE_UNORDERED_ACCESS        = 0x400L;
 
 const UINT DXGI_ENUM_MODES_INTERLACED               = 1;
 const UINT DXGI_ENUM_MODES_SCALING                  = 2;
@@ -67,7 +69,8 @@
 typedef enum DXGI_SWAP_EFFECT {
     DXGI_SWAP_EFFECT_DISCARD    = 0,
     DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
-    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3
+    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
+    DXGI_SWAP_EFFECT_FLIP_DISCARD = 4
 } DXGI_SWAP_EFFECT;
 
 typedef enum DXGI_RESIDENCY {
diff --git a/x86_64-w64-mingw32/include/dxgi1_2.h b/x86_64-w64-mingw32/include/dxgi1_2.h
index 72ac571..de3f359 100644
--- a/x86_64-w64-mingw32/include/dxgi1_2.h
+++ b/x86_64-w64-mingw32/include/dxgi1_2.h
@@ -32,6 +32,11 @@
 typedef interface IDXGIFactory2 IDXGIFactory2;
 #endif
 
+#ifndef __IDXGIAdapter2_FWD_DEFINED__
+#define __IDXGIAdapter2_FWD_DEFINED__
+typedef interface IDXGIAdapter2 IDXGIAdapter2;
+#endif
+
 /* Headers for imported files */
 
 #include <dxgi.h>
@@ -1187,6 +1192,199 @@
 
 #endif  /* __IDXGIFactory2_INTERFACE_DEFINED__ */
 
+typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
+    DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
+    DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
+    DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
+    DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
+    DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
+} DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
+typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
+    DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
+    DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
+    DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
+    DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
+    DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
+} DXGI_COMPUTE_PREEMPTION_GRANULARITY;
+typedef struct DXGI_ADAPTER_DESC2 {
+    WCHAR Description[128];
+    UINT VendorId;
+    UINT DeviceId;
+    UINT SubSysId;
+    UINT Revision;
+    SIZE_T DedicatedVideoMemory;
+    SIZE_T DedicatedSystemMemory;
+    SIZE_T SharedSystemMemory;
+    LUID AdapterLuid;
+    UINT Flags;
+    DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
+    DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
+} DXGI_ADAPTER_DESC2;
+/*****************************************************************************
+ * IDXGIAdapter2 interface
+ */
+#ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
+#define __IDXGIAdapter2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")
+IDXGIAdapter2 : public IDXGIAdapter1
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDesc2(
+        DXGI_ADAPTER_DESC2 *pDesc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5)
+#endif
+#else
+typedef struct IDXGIAdapter2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDXGIAdapter2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDXGIAdapter2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDXGIAdapter2* This);
+
+    /*** IDXGIObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IDXGIAdapter2* This,
+        REFGUID guid,
+        UINT data_size,
+        const void *data);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        IDXGIAdapter2* This,
+        REFGUID guid,
+        const IUnknown *object);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IDXGIAdapter2* This,
+        REFGUID guid,
+        UINT *data_size,
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IDXGIAdapter2* This,
+        REFIID riid,
+        void **parent);
+
+    /*** IDXGIAdapter methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
+        IDXGIAdapter2* This,
+        UINT output_idx,
+        IDXGIOutput **output);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IDXGIAdapter2* This,
+        DXGI_ADAPTER_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
+        IDXGIAdapter2* This,
+        REFGUID guid,
+        LARGE_INTEGER *umd_version);
+
+    /*** IDXGIAdapter1 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDesc1)(
+        IDXGIAdapter2* This,
+        DXGI_ADAPTER_DESC1 *pDesc);
+
+    /*** IDXGIAdapter2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDesc2)(
+        IDXGIAdapter2* This,
+        DXGI_ADAPTER_DESC2 *pDesc);
+
+    END_INTERFACE
+} IDXGIAdapter2Vtbl;
+interface IDXGIAdapter2 {
+    CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDXGIObject methods ***/
+#define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
+#define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
+#define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
+#define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
+/*** IDXGIAdapter methods ***/
+#define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
+#define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
+/*** IDXGIAdapter1 methods ***/
+#define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
+/*** IDXGIAdapter2 methods ***/
+#define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDXGIObject methods ***/
+static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) {
+    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
+}
+static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) {
+    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) {
+    return This->lpVtbl->GetParent(This,riid,parent);
+}
+/*** IDXGIAdapter methods ***/
+static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) {
+    return This->lpVtbl->EnumOutputs(This,output_idx,output);
+}
+static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) {
+    return This->lpVtbl->GetDesc(This,desc);
+}
+static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) {
+    return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
+}
+/*** IDXGIAdapter1 methods ***/
+static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) {
+    return This->lpVtbl->GetDesc1(This,pDesc);
+}
+/*** IDXGIAdapter2 methods ***/
+static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) {
+    return This->lpVtbl->GetDesc2(This,pDesc);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDXGIAdapter2_GetDesc2_Proxy(
+    IDXGIAdapter2* This,
+    DXGI_ADAPTER_DESC2 *pDesc);
+void __RPC_STUB IDXGIAdapter2_GetDesc2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
+
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/x86_64-w64-mingw32/include/dxgi1_2.idl b/x86_64-w64-mingw32/include/dxgi1_2.idl
index 775b81c..92f9c0e 100644
--- a/x86_64-w64-mingw32/include/dxgi1_2.idl
+++ b/x86_64-w64-mingw32/include/dxgi1_2.idl
@@ -190,3 +190,45 @@
             [in]  IDXGIOutput *pRestrictToOutput,
             [out] IDXGISwapChain1 **ppSwapChain);
 }
+
+typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
+    DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY,
+    DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY,
+    DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY,
+    DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY,
+    DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY
+} DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
+
+typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
+    DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY,
+    DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY,
+    DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY,
+    DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY,
+    DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY
+} DXGI_COMPUTE_PREEMPTION_GRANULARITY;
+
+typedef struct DXGI_ADAPTER_DESC2 {
+    WCHAR Description[128];
+    UINT VendorId;
+    UINT DeviceId;
+    UINT SubSysId;
+    UINT Revision;
+    SIZE_T DedicatedVideoMemory;
+    SIZE_T DedicatedSystemMemory;
+    SIZE_T SharedSystemMemory;
+    LUID AdapterLuid;
+    UINT Flags;
+    DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
+    DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
+} DXGI_ADAPTER_DESC2;
+
+[
+    object,
+    uuid(0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5),
+    local,
+    pointer_default(unique)
+]
+interface IDXGIAdapter2 : IDXGIAdapter1
+{
+    HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc);
+}
diff --git a/x86_64-w64-mingw32/include/dxva.h b/x86_64-w64-mingw32/include/dxva.h
index e1793d9..050baec 100644
--- a/x86_64-w64-mingw32/include/dxva.h
+++ b/x86_64-w64-mingw32/include/dxva.h
@@ -211,6 +211,143 @@
 } DXVA_Slice_H264_Short;
 #pragma pack(pop)
 
+/* HEVC Picture Entry structure */
+typedef struct {
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR Index7Bits : 7; 
+            UCHAR AssociatedFlag : 1; 
+        }; 
+        UCHAR bPicEntry; 
+    }; 
+} DXVA_PicEntry_HEVC, *LPDXVA_PicEntry_HEVC;
+
+/* HEVC Picture Parameter structure */
+#pragma pack(push, 1)
+typedef struct _DXVA_PicParams_HEVC {
+    USHORT      PicWidthInMinCbsY;
+    USHORT      PicHeightInMinCbsY;
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            USHORT  chroma_format_idc                       : 2;
+            USHORT  separate_colour_plane_flag              : 1;
+            USHORT  bit_depth_luma_minus8                   : 3; 
+            USHORT  bit_depth_chroma_minus8                 : 3;
+            USHORT  log2_max_pic_order_cnt_lsb_minus4       : 4;
+            USHORT  NoPicReorderingFlag                     : 1;
+            USHORT  NoBiPredFlag                            : 1;
+            USHORT  ReservedBits1                            : 1;
+        };
+        USHORT wFormatAndSequenceInfoFlags;
+    };
+    DXVA_PicEntry_HEVC  CurrPic;
+    UCHAR   sps_max_dec_pic_buffering_minus1;
+    UCHAR   log2_min_luma_coding_block_size_minus3;
+    UCHAR   log2_diff_max_min_luma_coding_block_size;
+    UCHAR   log2_min_transform_block_size_minus2;
+    UCHAR   log2_diff_max_min_transform_block_size;
+    UCHAR   max_transform_hierarchy_depth_inter;
+    UCHAR   max_transform_hierarchy_depth_intra;
+    UCHAR   num_short_term_ref_pic_sets;
+    UCHAR   num_long_term_ref_pics_sps;
+    UCHAR   num_ref_idx_l0_default_active_minus1;
+    UCHAR   num_ref_idx_l1_default_active_minus1;
+    CHAR    init_qp_minus26;
+    UCHAR   ucNumDeltaPocsOfRefRpsIdx;
+    USHORT  wNumBitsForShortTermRPSInSlice;
+    USHORT  ReservedBits2;
+
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UINT32  scaling_list_enabled_flag                    : 1;
+            UINT32  amp_enabled_flag                            : 1;
+            UINT32  sample_adaptive_offset_enabled_flag         : 1;
+            UINT32  pcm_enabled_flag                            : 1;
+            UINT32  pcm_sample_bit_depth_luma_minus1            : 4;
+            UINT32  pcm_sample_bit_depth_chroma_minus1          : 4;
+            UINT32  log2_min_pcm_luma_coding_block_size_minus3  : 2;
+            UINT32  log2_diff_max_min_pcm_luma_coding_block_size : 2;
+            UINT32  pcm_loop_filter_disabled_flag                : 1;
+            UINT32  long_term_ref_pics_present_flag             : 1;
+            UINT32  sps_temporal_mvp_enabled_flag               : 1;
+            UINT32  strong_intra_smoothing_enabled_flag         : 1;
+            UINT32  dependent_slice_segments_enabled_flag       : 1;
+            UINT32  output_flag_present_flag                    : 1;
+            UINT32  num_extra_slice_header_bits                 : 3;
+            UINT32  sign_data_hiding_enabled_flag               : 1;
+            UINT32  cabac_init_present_flag                     : 1;
+            UINT32  ReservedBits3                               : 5;
+        };
+        UINT32 dwCodingParamToolFlags;
+    };
+
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UINT32  constrained_intra_pred_flag                 : 1;
+            UINT32  transform_skip_enabled_flag                 : 1;
+            UINT32  cu_qp_delta_enabled_flag                    : 1;
+            UINT32  pps_slice_chroma_qp_offsets_present_flag    : 1;
+            UINT32  weighted_pred_flag                          : 1;
+            UINT32  weighted_bipred_flag                        : 1;
+            UINT32  transquant_bypass_enabled_flag              : 1;
+            UINT32  tiles_enabled_flag                          : 1;
+            UINT32  entropy_coding_sync_enabled_flag            : 1;
+            UINT32  uniform_spacing_flag                        : 1;
+            UINT32  loop_filter_across_tiles_enabled_flag       : 1;
+            UINT32  pps_loop_filter_across_slices_enabled_flag  : 1;
+            UINT32  deblocking_filter_override_enabled_flag     : 1;
+            UINT32  pps_deblocking_filter_disabled_flag         : 1;
+            UINT32  lists_modification_present_flag             : 1;
+            UINT32  slice_segment_header_extension_present_flag : 1;
+            UINT32  IrapPicFlag                                 : 1;
+            UINT32  IdrPicFlag                                  : 1;
+            UINT32  IntraPicFlag                                : 1;
+            UINT32  ReservedBits4                               : 13;
+        };
+        UINT32 dwCodingSettingPicturePropertyFlags;
+    };
+    CHAR    pps_cb_qp_offset;
+    CHAR    pps_cr_qp_offset;
+    UCHAR   num_tile_columns_minus1;
+    UCHAR   num_tile_rows_minus1;
+    USHORT  column_width_minus1[19];
+    USHORT  row_height_minus1[21];
+    UCHAR   diff_cu_qp_delta_depth;
+    CHAR    pps_beta_offset_div2;
+    CHAR    pps_tc_offset_div2;
+    UCHAR   log2_parallel_merge_level_minus2;
+    INT     CurrPicOrderCntVal;
+    DXVA_PicEntry_HEVC	RefPicList[15];
+    UCHAR   ReservedBits5;
+    INT     PicOrderCntValList[15];
+    UCHAR   RefPicSetStCurrBefore[8];
+    UCHAR   RefPicSetStCurrAfter[8];
+    UCHAR   RefPicSetLtCurr[8];
+    USHORT  ReservedBits6;
+    USHORT  ReservedBits7;
+    UINT    StatusReportFeedbackNumber;
+} DXVA_PicParams_HEVC, *LPDXVA_PicParams_HEVC;
+
+/* HEVC Quantizatiuon Matrix structure */
+typedef struct _DXVA_Qmatrix_HEVC {
+    UCHAR ucScalingLists0[6][16]; 
+    UCHAR ucScalingLists1[6][64]; 
+    UCHAR ucScalingLists2[6][64]; 
+    UCHAR ucScalingLists3[2][64]; 
+    UCHAR ucScalingListDCCoefSizeID2[6];
+    UCHAR ucScalingListDCCoefSizeID3[2];
+} DXVA_Qmatrix_HEVC, *LPDXVA_Qmatrix_HEVC;
+
+
+/* HEVC Slice Control Structure */
+typedef struct _DXVA_Slice_HEVC_Short {
+    UINT    BSNALunitDataLocation; 
+    UINT    SliceBytesInBuffer; 
+    USHORT  wBadSliceChopping; 
+} DXVA_Slice_HEVC_Short, *LPDXVA_Slice_HEVC_Short;
+
+#pragma pack(pop)
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/x86_64-w64-mingw32/include/dxva2api.h b/x86_64-w64-mingw32/include/dxva2api.h
index 39994f3..d4c5446 100644
--- a/x86_64-w64-mingw32/include/dxva2api.h
+++ b/x86_64-w64-mingw32/include/dxva2api.h
@@ -22,6 +22,21 @@
 typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
 #endif
 
+#ifndef __IDirectXVideoDecoder_FWD_DEFINED__
+#define __IDirectXVideoDecoder_FWD_DEFINED__
+typedef interface IDirectXVideoDecoder IDirectXVideoDecoder;
+#endif
+
+#ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__
+#define __IDirectXVideoAccelerationService_FWD_DEFINED__
+typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService;
+#endif
+
+#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
+#define __IDirectXVideoDecoderService_FWD_DEFINED__
+typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
+#endif
+
 /* Headers for imported files */
 
 #include <unknwn.h>
@@ -36,6 +51,11 @@
 typedef DWORD D3DFORMAT;
 typedef DWORD D3DPOOL;
 #endif
+#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
+#define __IDirectXVideoDecoderService_FWD_DEFINED__
+typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
+#endif
+
 #ifndef __REFERENCE_TIME_DEFINED
 #define __REFERENCE_TIME_DEFINED
 typedef LONGLONG REFERENCE_TIME;
@@ -51,9 +71,6 @@
 #define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)
 #define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)
 
-DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);
-DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);
-
 DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
 DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
 DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
@@ -73,8 +90,6 @@
 DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
 DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
 
-typedef struct IDirectXVideoDecoderService IDirectXVideoDecoderService;
-
 typedef enum _DXVA2_SampleFormat {
   DXVA2_SampleFormatMask                  = 0x00FF,
   DXVA2_SampleUnknown                     = 0,
@@ -179,70 +194,64 @@
   UCHAR Y;
   UCHAR Alpha;
 } DXVA2_AYUVSample8;
-
 typedef struct _DXVA2_ConfigPictureDecode {
-  GUID   guidConfigBitstreamEncryption;
-  GUID   guidConfigMBcontrolEncryption;
-  GUID   guidConfigResidDiffEncryption;
-  UINT   ConfigBitstreamRaw;
-  UINT   ConfigMBcontrolRasterOrder;
-  UINT   ConfigResidDiffHost;
-  UINT   ConfigSpatialResid8;
-  UINT   ConfigResid8Subtraction;
-  UINT   ConfigSpatialHost8or9Clipping;
-  UINT   ConfigSpatialResidInterleaved;
-  UINT   ConfigIntraResidUnsigned;
-  UINT   ConfigResidDiffAccelerator;
-  UINT   ConfigHostInverseScan;
-  UINT   ConfigSpecificIDCT;
-  UINT   Config4GroupedCoefs;
-  USHORT ConfigMinRenderTargetBuffCount;
-  USHORT ConfigDecoderSpecific;
+    GUID guidConfigBitstreamEncryption;
+    GUID guidConfigMBcontrolEncryption;
+    GUID guidConfigResidDiffEncryption;
+    UINT ConfigBitstreamRaw;
+    UINT ConfigMBcontrolRasterOrder;
+    UINT ConfigResidDiffHost;
+    UINT ConfigSpatialResid8;
+    UINT ConfigResid8Subtraction;
+    UINT ConfigSpatialHost8or9Clipping;
+    UINT ConfigSpatialResidInterleaved;
+    UINT ConfigIntraResidUnsigned;
+    UINT ConfigResidDiffAccelerator;
+    UINT ConfigHostInverseScan;
+    UINT ConfigSpecificIDCT;
+    UINT Config4GroupedCoefs;
+    USHORT ConfigMinRenderTargetBuffCount;
+    USHORT ConfigDecoderSpecific;
 } DXVA2_ConfigPictureDecode;
-
 typedef struct _DXVA2_DecodeBufferDesc {
-  DWORD CompressedBufferType;
-  UINT  BufferIndex;
-  UINT  DataOffset;
-  UINT  DataSize;
-  UINT  FirstMBaddress;
-  UINT  NumMBsInBuffer;
-  UINT  Width;
-  UINT  Height;
-  UINT  Stride;
-  UINT  ReservedBits;
-  PVOID pvPVPState;
+    DWORD CompressedBufferType;
+    UINT BufferIndex;
+    UINT DataOffset;
+    UINT DataSize;
+    UINT FirstMBaddress;
+    UINT NumMBsInBuffer;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    UINT ReservedBits;
+    PVOID pvPVPState;
 } DXVA2_DecodeBufferDesc;
-
 typedef struct _DXVA2_DecodeExtensionData {
-  UINT  Function;
-  PVOID pPrivateInputData;
-  UINT  PrivateInputDataSize;
-  PVOID pPrivateOutputData;
-  UINT  PrivateOutputDataSize;
+    UINT Function;
+    PVOID pPrivateInputData;
+    UINT PrivateInputDataSize;
+    PVOID pPrivateOutputData;
+    UINT PrivateOutputDataSize;
 } DXVA2_DecodeExtensionData;
-
 typedef struct _DXVA2_DecodeExecuteParams {
-  UINT                      NumCompBuffers;
-  DXVA2_DecodeBufferDesc    *pCompressedBuffers;
-  DXVA2_DecodeExtensionData *pExtensionData;
+    UINT NumCompBuffers;
+    DXVA2_DecodeBufferDesc *pCompressedBuffers;
+    DXVA2_DecodeExtensionData *pExtensionData;
 } DXVA2_DecodeExecuteParams;
-
-typedef struct {
-  __C89_NAMELESS union {
-    __C89_NAMELESS struct {
-      UINT SampleFormat            :8;
-      UINT VideoChromaSubsampling  :4;
-      UINT NominalRange            :3;
-      UINT VideoTransferMatrix     :3;
-      UINT VideoLighting           :4;
-      UINT VideoPrimaries          :5;
-      UINT VideoTransferFunction   :5;
-    } DUMMYSTRUCTNAME;
-    UINT   value;
-  } DUMMYUNIONNAME;
+typedef struct _DXVA2_ExtendedFormat {
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UINT SampleFormat : 8;
+            UINT VideoChromaSubsampling : 4;
+            UINT NominalRange : 3;
+            UINT VideoTransferMatrix : 3;
+            UINT VideoLighting : 4;
+            UINT VideoPrimaries : 5;
+            UINT VideoTransferFunction : 5;
+        } __C89_NAMELESSSTRUCTNAME;
+        UINT value;
+    } __C89_NAMELESSUNIONNAME;
 } DXVA2_ExtendedFormat;
-
 typedef struct _DXVA2_Fixed32 {
   __C89_NAMELESS union {
     __C89_NAMELESS struct {
@@ -258,12 +267,10 @@
   DXVA2_Fixed32 Threshold;
   DXVA2_Fixed32 Radius;
 } DXVA2_FilterValues;
-
 typedef struct _DXVA2_Frequency {
-  UINT Numerator;
-  UINT Denominator;
+    UINT Numerator;
+    UINT Denominator;
 } DXVA2_Frequency;
-
 typedef struct _DXVA2_ProcAmpValues {
   DXVA2_Fixed32 Brightness;
   DXVA2_Fixed32 Contrast;
@@ -277,20 +284,16 @@
   DXVA2_Fixed32 DefaultValue;
   DXVA2_Fixed32 StepSize;
 } DXVA2_ValueRange;
-
-#ifdef _D3D9_H_
 typedef struct _DXVA2_VideoDesc {
-  UINT                 SampleWidth;
-  UINT                 SampleHeight;
-  DXVA2_ExtendedFormat SampleFormat;
-  D3DFORMAT            Format;
-  DXVA2_Frequency      InputSampleFreq;
-  DXVA2_Frequency      OutputFrameFreq;
-  UINT                 UABProtectionLevel;
-  UINT                 Reserved;
+    UINT SampleWidth;
+    UINT SampleHeight;
+    DXVA2_ExtendedFormat SampleFormat;
+    D3DFORMAT Format;
+    DXVA2_Frequency InputSampleFreq;
+    DXVA2_Frequency OutputFrameFreq;
+    UINT UABProtectionLevel;
+    UINT Reserved;
 } DXVA2_VideoDesc;
-#endif
-
 /* DeviceCaps
 DXVA2_VPDev_EmulatedDXVA1
 DXVA2_VPDev_HardwareDevice
@@ -433,7 +436,6 @@
   f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;
   return f32;
 }
-
 #ifdef _D3D9_H_
 HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);
 HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);
@@ -653,97 +655,530 @@
 
 #endif  /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */
 
-#undef  INTERFACE
-#define INTERFACE IDirectXVideoDecoder
-DECLARE_INTERFACE_(IDirectXVideoDecoder,IUnknown)
+/*****************************************************************************
+ * IDirectXVideoDecoder interface
+ */
+#ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__
+#define __IDirectXVideoDecoder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d")
+IDirectXVideoDecoder : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService(
+        IDirectXVideoDecoderService **ppService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
+        GUID *pDeviceGuid,
+        DXVA2_VideoDesc *pVideoDesc,
+        DXVA2_ConfigPictureDecode *pConfig,
+        IDirect3DSurface9 ***pDecoderRenderTargets,
+        UINT *pNumSurfaces) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBuffer(
+        UINT BufferType,
+        void **ppBuffer,
+        UINT *pBufferSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
+        UINT BufferType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginFrame(
+        IDirect3DSurface9 *pRenderTarget,
+        void *pvPVPData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndFrame(
+        HANDLE *pHandleComplete) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Execute(
+        const DXVA2_DecodeExecuteParams *pExecuteParams) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d)
+#endif
+#else
+typedef struct IDirectXVideoDecoderVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDirectXVideoDecoder* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDirectXVideoDecoder methods */
-    STDMETHOD_(HRESULT,GetVideoDecoderService)(THIS_ IDirectXVideoDecoderService **ppAccelServices) PURE;
-    STDMETHOD_(HRESULT,GetCreationParameters)(THIS_ GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pppDecoderRenderTargets,UINT *pNumSurfaces) PURE;
-    STDMETHOD_(HRESULT,GetBuffer)(THIS_ UINT BufferType,void **ppBuffer,UINT *pBufferSize) PURE;
-    STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ UINT BufferType) PURE;
-    STDMETHOD_(HRESULT,BeginFrame)(THIS_ IDirect3DSurface9 *pRenderTarget,void *pvPVPData) PURE;
-    STDMETHOD_(HRESULT,EndFrame)(THIS_ HANDLE *pHandleComplete) PURE;
-    STDMETHOD_(HRESULT,Execute)(THIS_ const DXVA2_DecodeExecuteParams *pExecuteParams) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDirectXVideoDecoder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDirectXVideoDecoder* This);
+
+    /*** IDirectXVideoDecoder methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)(
+        IDirectXVideoDecoder* This,
+        IDirectXVideoDecoderService **ppService);
+
+    HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
+        IDirectXVideoDecoder* This,
+        GUID *pDeviceGuid,
+        DXVA2_VideoDesc *pVideoDesc,
+        DXVA2_ConfigPictureDecode *pConfig,
+        IDirect3DSurface9 ***pDecoderRenderTargets,
+        UINT *pNumSurfaces);
+
+    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+        IDirectXVideoDecoder* This,
+        UINT BufferType,
+        void **ppBuffer,
+        UINT *pBufferSize);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
+        IDirectXVideoDecoder* This,
+        UINT BufferType);
+
+    HRESULT (STDMETHODCALLTYPE *BeginFrame)(
+        IDirectXVideoDecoder* This,
+        IDirect3DSurface9 *pRenderTarget,
+        void *pvPVPData);
+
+    HRESULT (STDMETHODCALLTYPE *EndFrame)(
+        IDirectXVideoDecoder* This,
+        HANDLE *pHandleComplete);
+
+    HRESULT (STDMETHODCALLTYPE *Execute)(
+        IDirectXVideoDecoder* This,
+        const DXVA2_DecodeExecuteParams *pExecuteParams);
 
     END_INTERFACE
+} IDirectXVideoDecoderVtbl;
+interface IDirectXVideoDecoder {
+    CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)
-#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppAccelServices) (This)->lpVtbl->GetVideoDecoderService(This,ppAccelServices)
-#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces)
+/*** IDirectXVideoDecoder methods ***/
+#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService)
+#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces)
 #define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)
 #define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)
 #define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)
 #define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)
 #define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDirectXVideoDecoder methods ***/
+static FORCEINLINE HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) {
+    return This->lpVtbl->GetVideoDecoderService(This,ppService);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) {
+    return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) {
+    return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) {
+    return This->lpVtbl->ReleaseBuffer(This,BufferType);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) {
+    return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) {
+    return This->lpVtbl->EndFrame(This,pHandleComplete);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) {
+    return This->lpVtbl->Execute(This,pExecuteParams);
+}
+#endif
+#endif
 
-#undef  INTERFACE
-#define INTERFACE IDirectXVideoAccelerationService
-DECLARE_INTERFACE_(IDirectXVideoAccelerationService,IUnknown)
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetVideoDecoderService_Proxy(
+    IDirectXVideoDecoder* This,
+    IDirectXVideoDecoderService **ppService);
+void __RPC_STUB IDirectXVideoDecoder_GetVideoDecoderService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetCreationParameters_Proxy(
+    IDirectXVideoDecoder* This,
+    GUID *pDeviceGuid,
+    DXVA2_VideoDesc *pVideoDesc,
+    DXVA2_ConfigPictureDecode *pConfig,
+    IDirect3DSurface9 ***pDecoderRenderTargets,
+    UINT *pNumSurfaces);
+void __RPC_STUB IDirectXVideoDecoder_GetCreationParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetBuffer_Proxy(
+    IDirectXVideoDecoder* This,
+    UINT BufferType,
+    void **ppBuffer,
+    UINT *pBufferSize);
+void __RPC_STUB IDirectXVideoDecoder_GetBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_ReleaseBuffer_Proxy(
+    IDirectXVideoDecoder* This,
+    UINT BufferType);
+void __RPC_STUB IDirectXVideoDecoder_ReleaseBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_BeginFrame_Proxy(
+    IDirectXVideoDecoder* This,
+    IDirect3DSurface9 *pRenderTarget,
+    void *pvPVPData);
+void __RPC_STUB IDirectXVideoDecoder_BeginFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_EndFrame_Proxy(
+    IDirectXVideoDecoder* This,
+    HANDLE *pHandleComplete);
+void __RPC_STUB IDirectXVideoDecoder_EndFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_Execute_Proxy(
+    IDirectXVideoDecoder* This,
+    const DXVA2_DecodeExecuteParams *pExecuteParams);
+void __RPC_STUB IDirectXVideoDecoder_Execute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDirectXVideoAccelerationService interface
+ */
+#ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
+#define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02")
+IDirectXVideoAccelerationService : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+        UINT Width,
+        UINT Height,
+        UINT BackBuffers,
+        D3DFORMAT Format,
+        D3DPOOL Pool,
+        DWORD Usage,
+        DWORD DxvaType,
+        IDirect3DSurface9 **ppSurface,
+        HANDLE *pSharedHandle) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
+#endif
+#else
+typedef struct IDirectXVideoAccelerationServiceVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDirectXVideoAccelerationService* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDirectXVideoAccelerationService methods */
-    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDirectXVideoAccelerationService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDirectXVideoAccelerationService* This);
+
+    /*** IDirectXVideoAccelerationService methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
+        IDirectXVideoAccelerationService* This,
+        UINT Width,
+        UINT Height,
+        UINT BackBuffers,
+        D3DFORMAT Format,
+        D3DPOOL Pool,
+        DWORD Usage,
+        DWORD DxvaType,
+        IDirect3DSurface9 **ppSurface,
+        HANDLE *pSharedHandle);
 
     END_INTERFACE
+} IDirectXVideoAccelerationServiceVtbl;
+interface IDirectXVideoAccelerationService {
+    CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)
+/*** IDirectXVideoAccelerationService methods ***/
 #define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDirectXVideoAccelerationService methods ***/
+static FORCEINLINE HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
+    return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
+}
+#endif
+#endif
 
-#undef  INTERFACE
-#define INTERFACE IDirectXVideoDecoderService
-DECLARE_INTERFACE_(IDirectXVideoDecoderService,IDirectXVideoAccelerationService)
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectXVideoAccelerationService_CreateSurface_Proxy(
+    IDirectXVideoAccelerationService* This,
+    UINT Width,
+    UINT Height,
+    UINT BackBuffers,
+    D3DFORMAT Format,
+    D3DPOOL Pool,
+    DWORD Usage,
+    DWORD DxvaType,
+    IDirect3DSurface9 **ppSurface,
+    HANDLE *pSharedHandle);
+void __RPC_STUB IDirectXVideoAccelerationService_CreateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDirectXVideoDecoderService interface
+ */
+#ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__
+#define __IDirectXVideoDecoderService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02")
+IDirectXVideoDecoderService : public IDirectXVideoAccelerationService
 {
+    virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids(
+        UINT *pCount,
+        GUID **pGuids) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets(
+        REFGUID Guid,
+        UINT *pCount,
+        D3DFORMAT **pFormats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations(
+        REFGUID Guid,
+        const DXVA2_VideoDesc *pVideoDesc,
+        void *pReserved,
+        UINT *pCount,
+        DXVA2_ConfigPictureDecode **ppConfigs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
+        REFGUID Guid,
+        const DXVA2_VideoDesc *pVideoDesc,
+        const DXVA2_ConfigPictureDecode *pConfig,
+        IDirect3DSurface9 **ppDecoderRenderTargets,
+        UINT NumRenderTargets,
+        IDirectXVideoDecoder **ppDecode) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
+#endif
+#else
+typedef struct IDirectXVideoDecoderServiceVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDirectXVideoDecoderService* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDirectXVideoAccelerationService methods */
-    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;
-    
-    /* IDirectXVideoDecoderService methods */
-    STDMETHOD_(HRESULT,GetDecoderDeviceGuids)(THIS_ UINT *Count,GUID **pGuids) PURE;
-    STDMETHOD_(HRESULT,GetDecoderRenderTargets)(THIS_ REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) PURE;
-    STDMETHOD_(HRESULT,GetDecoderConfigurations)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,IUnknown *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) PURE;
-    STDMETHOD_(HRESULT,CreateVideoDecoder)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumSurfaces,IDirectXVideoDecoder **ppDecode) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDirectXVideoDecoderService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDirectXVideoDecoderService* This);
+
+    /*** IDirectXVideoAccelerationService methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
+        IDirectXVideoDecoderService* This,
+        UINT Width,
+        UINT Height,
+        UINT BackBuffers,
+        D3DFORMAT Format,
+        D3DPOOL Pool,
+        DWORD Usage,
+        DWORD DxvaType,
+        IDirect3DSurface9 **ppSurface,
+        HANDLE *pSharedHandle);
+
+    /*** IDirectXVideoDecoderService methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)(
+        IDirectXVideoDecoderService* This,
+        UINT *pCount,
+        GUID **pGuids);
+
+    HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)(
+        IDirectXVideoDecoderService* This,
+        REFGUID Guid,
+        UINT *pCount,
+        D3DFORMAT **pFormats);
+
+    HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)(
+        IDirectXVideoDecoderService* This,
+        REFGUID Guid,
+        const DXVA2_VideoDesc *pVideoDesc,
+        void *pReserved,
+        UINT *pCount,
+        DXVA2_ConfigPictureDecode **ppConfigs);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
+        IDirectXVideoDecoderService* This,
+        REFGUID Guid,
+        const DXVA2_VideoDesc *pVideoDesc,
+        const DXVA2_ConfigPictureDecode *pConfig,
+        IDirect3DSurface9 **ppDecoderRenderTargets,
+        UINT NumRenderTargets,
+        IDirectXVideoDecoder **ppDecode);
 
     END_INTERFACE
+} IDirectXVideoDecoderServiceVtbl;
+interface IDirectXVideoDecoderService {
+    CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl;
 };
-#endif
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)
+/*** IDirectXVideoAccelerationService methods ***/
 #define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)
-#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,Count,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,Count,pGuids)
+/*** IDirectXVideoDecoderService methods ***/
+#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,pCount,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids)
 #define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)
 #define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)
-#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode)
-#endif /*COBJMACROS*/
+#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDirectXVideoAccelerationService methods ***/
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
+    return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
+}
+/*** IDirectXVideoDecoderService methods ***/
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *pCount,GUID **pGuids) {
+    return This->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) {
+    return This->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) {
+    return This->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs);
+}
+static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumRenderTargets,IDirectXVideoDecoder **ppDecode) {
+    return This->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderDeviceGuids_Proxy(
+    IDirectXVideoDecoderService* This,
+    UINT *pCount,
+    GUID **pGuids);
+void __RPC_STUB IDirectXVideoDecoderService_GetDecoderDeviceGuids_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderRenderTargets_Proxy(
+    IDirectXVideoDecoderService* This,
+    REFGUID Guid,
+    UINT *pCount,
+    D3DFORMAT **pFormats);
+void __RPC_STUB IDirectXVideoDecoderService_GetDecoderRenderTargets_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderConfigurations_Proxy(
+    IDirectXVideoDecoderService* This,
+    REFGUID Guid,
+    const DXVA2_VideoDesc *pVideoDesc,
+    void *pReserved,
+    UINT *pCount,
+    DXVA2_ConfigPictureDecode **ppConfigs);
+void __RPC_STUB IDirectXVideoDecoderService_GetDecoderConfigurations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_CreateVideoDecoder_Proxy(
+    IDirectXVideoDecoderService* This,
+    REFGUID Guid,
+    const DXVA2_VideoDesc *pVideoDesc,
+    const DXVA2_ConfigPictureDecode *pConfig,
+    IDirect3DSurface9 **ppDecoderRenderTargets,
+    UINT NumRenderTargets,
+    IDirectXVideoDecoder **ppDecode);
+void __RPC_STUB IDirectXVideoDecoderService_CreateVideoDecoder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */
+
+#endif /* _D3D9_H_ */
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/x86_64-w64-mingw32/include/esent.h b/x86_64-w64-mingw32/include/esent.h
index 8d99709..b327228 100644
--- a/x86_64-w64-mingw32/include/esent.h
+++ b/x86_64-w64-mingw32/include/esent.h
@@ -6,12 +6,22 @@
 #ifndef _INC_ESENT
 #define _INC_ESENT
 
+#include <_mingw_unicode.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#ifndef JET_VERSION
+# ifdef WINVER
+#  define JET_VERSION WINVER
+# else
+#  define JET_VERSION 0x0a00
+# endif
+#endif
+
 #ifndef JET_API
-#define JET_API WINAPI
+#define JET_API __stdcall
 #endif
 
 #if defined(_WIN64)
@@ -57,7 +67,7 @@
   JET_coltypLongBinary,
   JET_coltypLongText,
   JET_coltypSLV,
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
   JET_coltypUnsignedLong,
   JET_coltypLongLong,
   JET_coltypGUID,
@@ -465,6 +475,71 @@
 
 #define JET_BASE_NAME_LENGTH 3
 #define JET_MAX_COMPUTERNAME_LENGTH 15
+
+#define JET_bitDbReadOnly  0x00000001
+#define JET_bitDbExclusive  0x00000002
+#define JET_bitDbDeleteCorruptIndexes  0x00000010
+#if (JET_VERSION >= 0x0502)
+#define JET_bitDbDeleteUnicodeIndexes  0x00000400
+#endif
+#if (JET_VERSION >= 0x0501)
+#define JET_bitDbUpgrade  0x00000200
+#endif
+#if (JET_VERSION >= 0x0601)
+#define JET_bitDbEnableBackgroundMaintenance  0x00000800
+#endif
+#if (JET_VERSION >= 0x0602)
+#define JET_bitDbPurgeCacheOnAttach  0x00001000
+#endif
+
+#define JET_bitTableDenyWrite  0x00000001
+#define JET_bitTableDenyRead  0x00000002
+#define JET_bitTableReadOnly  0x00000004
+#define JET_bitTableUpdatable  0x00000008
+#define JET_bitTablePermitDDL  0x00000010
+#define JET_bitTableNoCache  0x00000020
+#define JET_bitTablePreread  0x00000040
+#define JET_bitTableOpportuneRead  0x00000080
+#define JET_bitTableSequential  0x00008000
+#define JET_bitTableClassMask  0x000f0000
+#define JET_bitTableClassNone  0x00000000
+#define JET_bitTableClass1  0x00010000
+#define JET_bitTableClass2  0x00020000
+#define JET_bitTableClass3  0x00030000
+#define JET_bitTableClass4  0x00040000
+#define JET_bitTableClass5  0x00050000
+#define JET_bitTableClass6  0x00060000
+#define JET_bitTableClass7  0x00070000
+#define JET_bitTableClass8  0x00080000
+#define JET_bitTableClass9  0x00090000
+#define JET_bitTableClass10  0x000a0000
+#define JET_bitTableClass11  0x000b0000
+#define JET_bitTableClass12  0x000c0000
+#define JET_bitTableClass13  0x000d0000
+#define JET_bitTableClass14  0x000e0000
+#define JET_bitTableClass15  0x000f0000
+
+#define JET_ColInfo  0u
+#define JET_ColInfoList  1u
+#define JET_ColInfoSysTabCursor  3u
+#define JET_ColInfoBase  4u
+#define JET_ColInfoListCompact  5u
+#if (JET_VERSION >= 0x0501)
+#define JET_ColInfoByColid  6u
+#define JET_ColInfoListSortColumnid  7u
+#endif
+#if (JET_VERSION >= 0x0600)
+#define JET_ColInfoBaseByColid  8u
+#define JET_ColInfoGrbitNonDerivedColumnsOnly  0x80000000
+#define JET_ColInfoGrbitMinimalInfo  0x40000000
+#define JET_ColInfoGrbitSortByColumnid  0x20000000
+#endif
+
+#define JET_MoveFirst  (0x80000000)
+#define JET_MovePrevious  (-1)
+#define JET_MoveNext  (+1)
+#define JET_MoveLast  (0x7fffffff)
+
 #define JET_cbBookmarkMost 256
 #if UNICODE
 #define JET_cbNameMost 128
@@ -477,25 +552,220 @@
 #define JET_cbColumnMost 255
 #define JET_cbLVDefaultValueMost 255
 #define JET_cbKeyMost 255
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 #define JET_cbKeyMost2KBytePage 500
 #define JET_cbKeyMost4KBytePage 1000
 #define JET_cbKeyMost8KBytePage 2000
 #define JET_cbKeyMostMin 255
 #define JET_ccolKeyMost 12
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 #define JET_cbLimitKeyMost 256
 #define JET_cbPrimaryKeyMost 255
 #define JET_cbSecondaryKeyMost 255
-#if (_WIN32_WINNT == 0x500)
+#if (JET_VERSION == 0x500)
 #define JET_ccolMost 0x00007ffe
 #else
 #define JET_ccolMost 0x0000fee0
-#endif /*(_WIN32_WINNT == 0x500)*/
+#endif /*(JET_VERSION == 0x500)*/
 #define JET_ccolFixedMost 0x0000007f
 #define JET_ccolVarMost 0x00000080
 #define JET_ccolTaggedMost ( JET_ccolMost - 0x000000ff ) /*64993*/
 
+#define JET_DbInfoFilename  0
+#define JET_DbInfoConnect  1
+#define JET_DbInfoCountry  2
+#define JET_DbInfoLCID  3
+#define JET_DbInfoLangid  3
+#define JET_DbInfoCp  4
+#define JET_DbInfoCollate  5
+#define JET_DbInfoOptions  6
+#define JET_DbInfoTransactions  7
+#define JET_DbInfoVersion  8
+#define JET_DbInfoIsam  9
+#define JET_DbInfoFilesize  10
+#define JET_DbInfoSpaceOwned  11
+#define JET_DbInfoSpaceAvailable  12
+#define JET_DbInfoUpgrade  13
+#define JET_DbInfoMisc  14
+#define JET_DbInfoDBInUse  15
+#define JET_DbInfoPageSize  17
+#define JET_DbInfoFileType  19
+#define JET_DbInfoFilesizeOnDisk  21
+
+#define JET_paramSystemPath  0
+#define JET_paramTempPath  1
+#define JET_paramLogFilePath  2
+#define JET_paramBaseName  3
+#define JET_paramEventSource  4
+#define JET_paramMaxSessions  5
+#define JET_paramMaxOpenTables  6
+#define JET_paramPreferredMaxOpenTables  7
+#if (JET_VERSION >= 0x0600)
+#define JET_paramCachedClosedTables  125
+#endif
+#define JET_paramMaxCursors  8
+#define JET_paramMaxVerPages  9
+#define JET_paramPreferredVerPages  63
+#if (JET_VERSION >= 0x0501)
+#define JET_paramGlobalMinVerPages  81
+#define JET_paramVersionStoreTaskQueueMax  105
+#endif
+#define JET_paramMaxTemporaryTables  10
+#define JET_paramLogFileSize  11
+#define JET_paramLogBuffers  12
+#define JET_paramWaitLogFlush  13
+#define JET_paramLogCheckpointPeriod  14
+#define JET_paramLogWaitingUserMax  15
+#define JET_paramCommitDefault  16
+#define JET_paramCircularLog  17
+#define JET_paramDbExtensionSize  18
+#define JET_paramPageTempDBMin  19
+#define JET_paramPageFragment  20
+#if (JET_VERSION >= 0x0600)
+#define JET_paramEnableFileCache  126
+#define JET_paramVerPageSize  128
+#define JET_paramConfiguration  129
+#define JET_paramEnableAdvanced  130
+#define JET_paramMaxColtyp  131
+#endif
+#define JET_paramBatchIOBufferMax  22
+#define JET_paramCacheSize  41
+#define JET_paramCacheSizeMin  60
+#define JET_paramCacheSizeMax  23
+#define JET_paramCheckpointDepthMax  24
+#define JET_paramLRUKCorrInterval  25
+#define JET_paramLRUKHistoryMax  26
+#define JET_paramLRUKPolicy  27
+#define JET_paramLRUKTimeout  28
+#define JET_paramLRUKTrxCorrInterval  29
+#define JET_paramOutstandingIOMax  30
+#define JET_paramStartFlushThreshold  31
+#define JET_paramStopFlushThreshold  32
+#if (JET_VERSION >= 0x0600)
+#define JET_paramEnableViewCache  127
+#define JET_paramCheckpointIOMax  135
+#define JET_paramTableClass1Name  137
+#define JET_paramTableClass2Name  138
+#define JET_paramTableClass3Name  139
+#define JET_paramTableClass4Name  140
+#define JET_paramTableClass5Name  141
+#define JET_paramTableClass6Name  142
+#define JET_paramTableClass7Name  143
+#define JET_paramTableClass8Name  144
+#define JET_paramTableClass9Name  145
+#define JET_paramTableClass10Name  146
+#define JET_paramTableClass11Name  147
+#define JET_paramTableClass12Name  148
+#define JET_paramTableClass13Name  149
+#define JET_paramTableClass14Name  150
+#define JET_paramTableClass15Name  151
+#endif
+#define JET_paramIOPriority  152
+#define JET_paramRecovery  34
+#define JET_paramEnableOnlineDefrag  35
+#define JET_paramCheckFormatWhenOpenFail 44
+#define JET_paramEnableTempTableVersioning  46
+#define JET_paramIgnoreLogVersion  47
+#define JET_paramDeleteOldLogs  48
+#define JET_paramEventSourceKey  49
+#define JET_paramNoInformationEvent  50
+#if (JET_VERSION >= 0x0501)
+#define JET_paramEventLoggingLevel  51
+#define JET_paramDeleteOutOfRangeLogs 52
+#define JET_paramAccessDeniedRetryPeriod  53
+#endif
+#define JET_paramEnableIndexChecking  45
+#if (JET_VERSION >= 0x0502)
+#define JET_paramEnableIndexCleanup  54
+#endif
+#define JET_paramDatabasePageSize  64
+#if (JET_VERSION >= 0x0501)
+#define JET_paramDisableCallbacks  65
+#endif
+#if (JET_VERSION >= 0x0501)
+#define JET_paramLogFileCreateAsynch  69
+#endif
+#define JET_paramErrorToString  70
+#if (JET_VERSION >= 0x0501)
+#define JET_paramZeroDatabaseDuringBackup  71
+#endif
+#define JET_paramUnicodeIndexDefault  72
+#if (JET_VERSION >= 0x0501)
+#define JET_paramRuntimeCallback  73
+#endif
+#define JET_paramCleanupMismatchedLogFiles  77
+#if (JET_VERSION >= 0x0501)
+#define JET_paramRecordUpgradeDirtyLevel  78
+#define JET_paramOSSnapshotTimeout  82
+#endif
+#define JET_paramExceptionAction  98
+#define JET_paramEventLogCache  99
+#if (JET_VERSION >= 0x0501)
+#define JET_paramCreatePathIfNotExist  100
+#define JET_paramPageHintCacheSize  101
+#define JET_paramOneDatabasePerSession  102
+#define JET_paramMaxInstances  104
+#define JET_paramDisablePerfmon  107
+#define JET_paramIndexTuplesLengthMin  110
+#define JET_paramIndexTuplesLengthMax  111
+#define JET_paramIndexTuplesToIndexMax  112
+#endif
+#if (JET_VERSION >= 0x0502)
+#define JET_paramAlternateDatabaseRecoveryPath  113
+#endif
+#if (JET_VERSION >= 0x0600)
+#define JET_paramIndexTupleIncrement  132
+#define JET_paramIndexTupleStart  133
+#define JET_paramKeyMost  134
+#define JET_paramLegacyFileNames  136
+#define JET_paramEnablePersistedCallbacks  156
+#endif
+#if (JET_VERSION >= 0x0601)
+#define JET_paramWaypointLatency  153
+#define JET_paramDefragmentSequentialBTrees  160
+#define JET_paramDefragmentSequentialBTreesDensityCheckFrequency  161
+#define JET_paramIOThrottlingTimeQuanta  162
+#define JET_paramLVChunkSizeMost  163
+#define JET_paramMaxCoalesceReadSize  164
+#define JET_paramMaxCoalesceWriteSize  165
+#define JET_paramMaxCoalesceReadGapSize  166
+#define JET_paramMaxCoalesceWriteGapSize  167
+#define JET_paramEnableDBScanInRecovery  169
+#define JET_paramDbScanThrottle  170
+#define JET_paramDbScanIntervalMinSec  171
+#define JET_paramDbScanIntervalMaxSec  172
+#endif
+#if (JET_VERSION >= 0x0602)
+#define JET_paramCachePriority  177
+#define JET_paramMaxTransactionSize  178
+#define JET_paramPrereadIOMax  179
+#define JET_paramEnableDBScanSerialization  180
+#define JET_paramHungIOThreshold  181
+#define JET_paramHungIOActions  182
+#define JET_paramMinDataForXpress  183
+#endif
+#if (JET_VERSION >= 0x0603)
+#define JET_paramEnableShrinkDatabase  184
+#endif
+#if (JET_VERSION >= 0x0602)
+#define JET_paramProcessFriendlyName  186
+#define JET_paramDurableCommitCallback  187
+#endif
+#if (JET_VERSION >= 0x0603)
+#define JET_paramEnableSqm  188
+#endif
+#if (JET_VERSION >= 0x0a00)
+#define JET_paramConfigStoreSpec  189
+#endif
+#define JET_paramMaxValueInvalid  193
+#define JET_sesparamCommitDefault  4097
+#if (JET_VERSION >= 0x0a00)
+#define JET_sesparamTransactionLevel  4099
+#define JET_sesparamOperationContext  4100
+#define JET_sesparamCorrelationID  4101
+#define JET_sesparamMaxValueInvalid  4102
+#endif
+
 typedef unsigned __LONG32 JET_COLUMNID;
 typedef double JET_DATESERIAL;
 typedef unsigned __LONG32 JET_DBID;
@@ -915,7 +1185,7 @@
   JET_COLUMNID columnidcPage;
 } JET_OBJECTLIST;
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 typedef struct tagJET_OPENTEMPORARYTABLE {
   unsigned __LONG32 cbStruct;
   const JET_COLUMNDEF* prgcolumndef;
@@ -927,7 +1197,7 @@
   unsigned __LONG32 cbVarSegMac;
   JET_TABLEID tableid;
 } JET_OPENTEMPORARYTABLE;
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 typedef struct _JET_RECORDLIST{
   unsigned __LONG32 cbStruct;
@@ -943,7 +1213,7 @@
   unsigned __LONG32 centriesTotal;
 } JET_RECPOS;
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 typedef struct _JET_RECSIZE {
   unsigned __int64 cbData;
   unsigned __int64 cbLongValueData;
@@ -954,7 +1224,7 @@
   unsigned __int64 cLongValues;
   unsigned __int64 cMultiValues;
 } JET_RECSIZE;
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 typedef struct _JET_RETINFO {
   unsigned __LONG32 cbStruct;
@@ -1122,7 +1392,7 @@
 
 #define JET_TABLECREATE2 __MINGW_NAME_AW(JET_TABLECREATE2_)
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 typedef struct _JET_THREADSTATS {
   unsigned __LONG32 cbStruct;
   unsigned __LONG32 cPageReferenced;
@@ -1134,7 +1404,7 @@
   unsigned __LONG32 cbLogRecord;
 } JET_THREADSTATS;
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 typedef struct tag_JET_USERDEFINEDDEFAULT_A {
   char* szCallback;
@@ -1274,6 +1544,8 @@
   JET_PCWSTR szPassword
 );
 
+#define JetBeginSession __MINGW_NAME_AW(JetBeginSession)
+
 JET_ERR JET_API JetBeginTransaction(
   JET_SESID sesid
 );
@@ -1899,14 +2171,14 @@
 
 #define JetGetInstanceInfo __MINGW_NAME_AW(JetGetInstanceInfo)
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetGetInstanceMiscInfo(
   JET_INSTANCE instance,
   void* pvResult,
   unsigned __LONG32 cbMax,
   unsigned __LONG32 InfoLevel
 );
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetGetLock(
   JET_SESID sesid,
@@ -2000,14 +2272,14 @@
   unsigned __LONG32 cbRecpos
 );
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetGetRecordSize(
   JET_SESID sesid,
   JET_TABLEID tableid,
   JET_RECSIZE* precsize,
   const JET_GRBIT grbit
 );
-#endif /* (_WIN32_WINNT >= 0x0600) */
+#endif /* (JET_VERSION >= 0x0600) */
 
 JET_ERR JET_API JetGetSecondaryIndexBookmark(
   JET_SESID sesid,
@@ -2174,7 +2446,7 @@
   JET_GRBIT grbit
 );
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetInit3A(
   JET_INSTANCE* pinstance,
   JET_RSTINFO_A* prstInfo,
@@ -2188,7 +2460,7 @@
 );
 
 #define JetInit3 __MINGW_NAME_AW(JetInit3)
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetIntersectIndexes(
   JET_SESID sesid,
@@ -2326,12 +2598,12 @@
   const JET_GRBIT grbit
 );
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetOSSnapshotEnd(
   const JET_OSSNAPID snapId,
   const JET_GRBIT grbit
 );
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetOSSnapshotFreezeA(
   const JET_OSSNAPID snapId,
@@ -2349,7 +2621,7 @@
 
 #define JetOSSnapshotFreeze __MINGW_NAME_AW(JetOSSnapshotFreeze)
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetOSSnapshotGetFreezeInfoA(
   const JET_OSSNAPID snapId,
   unsigned __LONG32* pcInstanceInfo,
@@ -2364,27 +2636,27 @@
   const JET_GRBIT grbit
 );
 #define JetOSSnapshotGetFreezeInfo __MINGW_NAME_AW(JetOSSnapshotGetFreezeInfo)
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetOSSnapshotPrepare(
   JET_OSSNAPID* psnapId,
   const JET_GRBIT grbit
 );
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetOSSnapshotPrepareInstance(
   JET_OSSNAPID snapId,
   JET_INSTANCE instance,
   const JET_GRBIT grbit
 );
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetOSSnapshotThaw(
   const JET_OSSNAPID snapId,
   const JET_GRBIT grbit
 );
 
-#if (_WIN32_WINNT >= 0x0600)
+#if (JET_VERSION >= 0x0600)
 JET_ERR JET_API JetOSSnapshotTruncateLog(
   const JET_OSSNAPID snapId,
   const JET_GRBIT grbit
@@ -2395,7 +2667,7 @@
   JET_INSTANCE instance,
   const JET_GRBIT grbit
 );
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+#endif /*(JET_VERSION >= 0x0600)*/
 
 JET_ERR JET_API JetPrepareUpdate(
   JET_SESID sesid,
diff --git a/x86_64-w64-mingw32/include/evntprov.h b/x86_64-w64-mingw32/include/evntprov.h
index 59e1ac4..ae4bafa 100644
--- a/x86_64-w64-mingw32/include/evntprov.h
+++ b/x86_64-w64-mingw32/include/evntprov.h
@@ -1,6 +1,6 @@
-/**
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
+/**

+ * This file is part of the mingw-w64 runtime package.

+ * No warranty is given; refer to the file DISCLAIMER within this package.

  */
 /*
  * evntprov.h
diff --git a/x86_64-w64-mingw32/include/exdisp.h b/x86_64-w64-mingw32/include/exdisp.h
index 985f096..3189953 100644
--- a/x86_64-w64-mingw32/include/exdisp.h
+++ b/x86_64-w64-mingw32/include/exdisp.h
@@ -1,72 +1,73 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 1.6 from include/exdisp.idl - Do not edit ***/
+
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 440
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
 
-#include "rpc.h"
-#include "rpcndr.h"
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
 
 #ifndef __exdisp_h__
 #define __exdisp_h__
 
+/* Forward declarations */
+
 #ifndef __IWebBrowser_FWD_DEFINED__
 #define __IWebBrowser_FWD_DEFINED__
-typedef struct IWebBrowser IWebBrowser;
+typedef interface IWebBrowser IWebBrowser;
 #endif
 
 #ifndef __DWebBrowserEvents_FWD_DEFINED__
 #define __DWebBrowserEvents_FWD_DEFINED__
-typedef struct DWebBrowserEvents DWebBrowserEvents;
+typedef interface DWebBrowserEvents DWebBrowserEvents;
 #endif
 
 #ifndef __IWebBrowserApp_FWD_DEFINED__
 #define __IWebBrowserApp_FWD_DEFINED__
-typedef struct IWebBrowserApp IWebBrowserApp;
+typedef interface IWebBrowserApp IWebBrowserApp;
 #endif
 
 #ifndef __IWebBrowser2_FWD_DEFINED__
 #define __IWebBrowser2_FWD_DEFINED__
-typedef struct IWebBrowser2 IWebBrowser2;
+typedef interface IWebBrowser2 IWebBrowser2;
 #endif
 
 #ifndef __DWebBrowserEvents2_FWD_DEFINED__
 #define __DWebBrowserEvents2_FWD_DEFINED__
-typedef struct DWebBrowserEvents2 DWebBrowserEvents2;
+typedef interface DWebBrowserEvents2 DWebBrowserEvents2;
 #endif
 
 #ifndef __WebBrowser_V1_FWD_DEFINED__
 #define __WebBrowser_V1_FWD_DEFINED__
-
 #ifdef __cplusplus
 typedef class WebBrowser_V1 WebBrowser_V1;
 #else
 typedef struct WebBrowser_V1 WebBrowser_V1;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __WebBrowser_V1_FWD_DEFINED__ */
 
 #ifndef __WebBrowser_FWD_DEFINED__
 #define __WebBrowser_FWD_DEFINED__
-
 #ifdef __cplusplus
 typedef class WebBrowser WebBrowser;
 #else
 typedef struct WebBrowser WebBrowser;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __WebBrowser_FWD_DEFINED__ */
 
 #ifndef __InternetExplorer_FWD_DEFINED__
 #define __InternetExplorer_FWD_DEFINED__
-
 #ifdef __cplusplus
 typedef class InternetExplorer InternetExplorer;
 #else
 typedef struct InternetExplorer InternetExplorer;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __InternetExplorer_FWD_DEFINED__ */
 
 #ifndef __ShellBrowserWindow_FWD_DEFINED__
 #define __ShellBrowserWindow_FWD_DEFINED__
@@ -74,17 +75,17 @@
 typedef class ShellBrowserWindow ShellBrowserWindow;
 #else
 typedef struct ShellBrowserWindow ShellBrowserWindow;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __ShellBrowserWindow_FWD_DEFINED__ */
 
 #ifndef __DShellWindowsEvents_FWD_DEFINED__
 #define __DShellWindowsEvents_FWD_DEFINED__
-typedef struct DShellWindowsEvents DShellWindowsEvents;
+typedef interface DShellWindowsEvents DShellWindowsEvents;
 #endif
 
 #ifndef __IShellWindows_FWD_DEFINED__
 #define __IShellWindows_FWD_DEFINED__
-typedef struct IShellWindows IShellWindows;
+typedef interface IShellWindows IShellWindows;
 #endif
 
 #ifndef __ShellWindows_FWD_DEFINED__
@@ -93,12 +94,17 @@
 typedef class ShellWindows ShellWindows;
 #else
 typedef struct ShellWindows ShellWindows;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __ShellWindows_FWD_DEFINED__ */
 
 #ifndef __IShellUIHelper_FWD_DEFINED__
 #define __IShellUIHelper_FWD_DEFINED__
-typedef struct IShellUIHelper IShellUIHelper;
+typedef interface IShellUIHelper IShellUIHelper;
+#endif
+
+#ifndef __IShellUIHelper2_FWD_DEFINED__
+#define __IShellUIHelper2_FWD_DEFINED__
+typedef interface IShellUIHelper2 IShellUIHelper2;
 #endif
 
 #ifndef __ShellUIHelper_FWD_DEFINED__
@@ -107,37 +113,45 @@
 typedef class ShellUIHelper ShellUIHelper;
 #else
 typedef struct ShellUIHelper ShellUIHelper;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __ShellUIHelper_FWD_DEFINED__ */
 
 #ifndef __DShellNameSpaceEvents_FWD_DEFINED__
 #define __DShellNameSpaceEvents_FWD_DEFINED__
-typedef struct DShellNameSpaceEvents DShellNameSpaceEvents;
+typedef interface DShellNameSpaceEvents DShellNameSpaceEvents;
 #endif
 
 #ifndef __IShellFavoritesNameSpace_FWD_DEFINED__
 #define __IShellFavoritesNameSpace_FWD_DEFINED__
-typedef struct IShellFavoritesNameSpace IShellFavoritesNameSpace;
+typedef interface IShellFavoritesNameSpace IShellFavoritesNameSpace;
 #endif
 
 #ifndef __IShellNameSpace_FWD_DEFINED__
 #define __IShellNameSpace_FWD_DEFINED__
-typedef struct IShellNameSpace IShellNameSpace;
+typedef interface IShellNameSpace IShellNameSpace;
 #endif
 
+#ifndef __ShellShellNameSpace_FWD_DEFINED__
+#define __ShellShellNameSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ShellShellNameSpace ShellShellNameSpace;
+#else
+typedef struct ShellShellNameSpace ShellShellNameSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __ShellShellNameSpace_FWD_DEFINED__ */
+
 #ifndef __ShellNameSpace_FWD_DEFINED__
 #define __ShellNameSpace_FWD_DEFINED__
-
 #ifdef __cplusplus
 typedef class ShellNameSpace ShellNameSpace;
 #else
 typedef struct ShellNameSpace ShellNameSpace;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __ShellNameSpace_FWD_DEFINED__ */
 
 #ifndef __IScriptErrorList_FWD_DEFINED__
 #define __IScriptErrorList_FWD_DEFINED__
-typedef struct IScriptErrorList IScriptErrorList;
+typedef interface IScriptErrorList IScriptErrorList;
 #endif
 
 #ifndef __CScriptErrorList_FWD_DEFINED__
@@ -146,173 +160,344 @@
 typedef class CScriptErrorList CScriptErrorList;
 #else
 typedef struct CScriptErrorList CScriptErrorList;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __CScriptErrorList_FWD_DEFINED__ */
 
 #ifndef __ISearch_FWD_DEFINED__
 #define __ISearch_FWD_DEFINED__
-typedef struct ISearch ISearch;
+typedef interface ISearch ISearch;
 #endif
 
 #ifndef __ISearches_FWD_DEFINED__
 #define __ISearches_FWD_DEFINED__
-typedef struct ISearches ISearches;
+typedef interface ISearches ISearches;
 #endif
 
 #ifndef __ISearchAssistantOC_FWD_DEFINED__
 #define __ISearchAssistantOC_FWD_DEFINED__
-typedef struct ISearchAssistantOC ISearchAssistantOC;
+typedef interface ISearchAssistantOC ISearchAssistantOC;
 #endif
 
 #ifndef __ISearchAssistantOC2_FWD_DEFINED__
 #define __ISearchAssistantOC2_FWD_DEFINED__
-typedef struct ISearchAssistantOC2 ISearchAssistantOC2;
+typedef interface ISearchAssistantOC2 ISearchAssistantOC2;
 #endif
 
 #ifndef __ISearchAssistantOC3_FWD_DEFINED__
 #define __ISearchAssistantOC3_FWD_DEFINED__
-typedef struct ISearchAssistantOC3 ISearchAssistantOC3;
+typedef interface ISearchAssistantOC3 ISearchAssistantOC3;
 #endif
 
 #ifndef ___SearchAssistantEvents_FWD_DEFINED__
 #define ___SearchAssistantEvents_FWD_DEFINED__
-typedef struct _SearchAssistantEvents _SearchAssistantEvents;
+typedef interface _SearchAssistantEvents _SearchAssistantEvents;
 #endif
 
+#ifndef __ShellSearchAssistantOC_FWD_DEFINED__
+#define __ShellSearchAssistantOC_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ShellSearchAssistantOC ShellSearchAssistantOC;
+#else
+typedef struct ShellSearchAssistantOC ShellSearchAssistantOC;
+#endif /* defined __cplusplus */
+#endif /* defined __ShellSearchAssistantOC_FWD_DEFINED__ */
+
 #ifndef __SearchAssistantOC_FWD_DEFINED__
 #define __SearchAssistantOC_FWD_DEFINED__
 #ifdef __cplusplus
 typedef class SearchAssistantOC SearchAssistantOC;
 #else
 typedef struct SearchAssistantOC SearchAssistantOC;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __SearchAssistantOC_FWD_DEFINED__ */
 
-#include "ocidl.h"
-#include "docobj.h"
+/* Headers for imported files */
+
+#include <ocidl.h>
+#include <docobj.h>
 
 #ifdef __cplusplus
-extern "C"{
+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 *);
+#ifdef WINE_NO_UNICODE_MACROS
+#undef FindText
 #endif
 
-#ifndef __SHDocVw_LIBRARY_DEFINED__
-#define __SHDocVw_LIBRARY_DEFINED__
+DEFINE_GUID(LIBID_SHDocVw, 0xeab22ac0, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b);
 
-  typedef enum CommandStateChangeConstants {
-    CSC_UPDATECOMMANDS = 0xffffffff,CSC_NAVIGATEFORWARD = 0x1,CSC_NAVIGATEBACK = 0x2
-  } CommandStateChangeConstants;
-
-  typedef enum SecureLockIconConstants {
-    secureLockIconUnsecure = 0,secureLockIconMixed = 0x1,secureLockIconSecureUnknownBits = 0x2,secureLockIconSecure40Bit = 0x3,
-    secureLockIconSecure56Bit = 0x4,secureLockIconSecureFortezza = 0x5,secureLockIconSecure128Bit = 0x6
-  } SecureLockIconConstants;
-
-  typedef enum ShellWindowTypeConstants {
-    SWC_EXPLORER = 0,SWC_BROWSER = 0x1,SWC_3RDPARTY = 0x2,SWC_CALLBACK = 0x4
-  } ShellWindowTypeConstants;
-
-  typedef enum ShellWindowFindWindowOptions {
-    SWFO_NEEDDISPATCH = 0x1,SWFO_INCLUDEPENDING = 0x2,SWFO_COOKIEPASSED = 0x4
-  } ShellWindowFindWindowOptions;
-
-  EXTERN_C const IID LIBID_SHDocVw;
-
+/*****************************************************************************
+ * IWebBrowser interface
+ */
 #ifndef __IWebBrowser_INTERFACE_DEFINED__
 #define __IWebBrowser_INTERFACE_DEFINED__
-  typedef enum BrowserNavConstants {
-    navOpenInNewWindow = 0x1,navNoHistory = 0x2,navNoReadFromCache = 0x4,navNoWriteToCache = 0x8,navAllowAutosearch = 0x10,
-    navBrowserBar = 0x20,navHyperlink = 0x40,navEnforceRestricted = 0x80,navNewWindowsManaged = 0x100,navUntrustedForDownload = 0x200,
-    navTrustedForActiveX = 0x400
-  } BrowserNavConstants;
 
-  typedef enum RefreshConstants {
-    REFRESH_NORMAL = 0,REFRESH_IFEXPIRED = 1,REFRESH_COMPLETELY = 3
-  } RefreshConstants;
-
-  EXTERN_C const IID IID_IWebBrowser;
+typedef enum BrowserNavConstants {
+    navOpenInNewWindow = 0x1,
+    navNoHistory = 0x2,
+    navNoReadFromCache = 0x4,
+    navNoWriteToCache = 0x8,
+    navAllowAutosearch = 0x10,
+    navBrowserBar = 0x20,
+    navHyperlink = 0x40,
+    navEnforceRestricted = 0x80
+} BrowserNavConstants;
+typedef enum RefreshConstants {
+    REFRESH_NORMAL = 0,
+    REFRESH_IFEXPIRED = 1,
+    REFRESH_COMPLETELY = 3
+} RefreshConstants;
+DEFINE_GUID(IID_IWebBrowser, 0xeab22ac1, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IWebBrowser : public IDispatch {
-  public:
-    virtual HRESULT WINAPI GoBack(void) = 0;
-    virtual HRESULT WINAPI GoForward(void) = 0;
-    virtual HRESULT WINAPI GoHome(void) = 0;
-    virtual HRESULT WINAPI GoSearch(void) = 0;
-    virtual HRESULT WINAPI Navigate(BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) = 0;
-    virtual HRESULT WINAPI Refresh(void) = 0;
-    virtual HRESULT WINAPI Refresh2(VARIANT *Level) = 0;
-    virtual HRESULT WINAPI Stop(void) = 0;
-    virtual HRESULT WINAPI get_Application(IDispatch **ppDisp) = 0;
-    virtual HRESULT WINAPI get_Parent(IDispatch **ppDisp) = 0;
-    virtual HRESULT WINAPI get_Container(IDispatch **ppDisp) = 0;
-    virtual HRESULT WINAPI get_Document(IDispatch **ppDisp) = 0;
-    virtual HRESULT WINAPI get_TopLevelContainer(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI get_Type(BSTR *Type) = 0;
-    virtual HRESULT WINAPI get_Left(__LONG32 *pl) = 0;
-    virtual HRESULT WINAPI put_Left(__LONG32 Left) = 0;
-    virtual HRESULT WINAPI get_Top(__LONG32 *pl) = 0;
-    virtual HRESULT WINAPI put_Top(__LONG32 Top) = 0;
-    virtual HRESULT WINAPI get_Width(__LONG32 *pl) = 0;
-    virtual HRESULT WINAPI put_Width(__LONG32 Width) = 0;
-    virtual HRESULT WINAPI get_Height(__LONG32 *pl) = 0;
-    virtual HRESULT WINAPI put_Height(__LONG32 Height) = 0;
-    virtual HRESULT WINAPI get_LocationName(BSTR *LocationName) = 0;
-    virtual HRESULT WINAPI get_LocationURL(BSTR *LocationURL) = 0;
-    virtual HRESULT WINAPI get_Busy(VARIANT_BOOL *pBool) = 0;
-  };
+MIDL_INTERFACE("eab22ac1-30c1-11cf-a7eb-0000c05bae0b")
+IWebBrowser : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE GoBack(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoForward(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoHome(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoSearch(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Navigate(
+        BSTR URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Refresh(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Refresh2(
+        VARIANT *Level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Application(
+        IDispatch **ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Parent(
+        IDispatch **ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Container(
+        IDispatch **ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Document(
+        IDispatch **ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopLevelContainer(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        BSTR *Type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Left(
+        LONG *pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Left(
+        LONG Left) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Top(
+        LONG *pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Top(
+        LONG Top) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Width(
+        LONG *pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Width(
+        LONG Width) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Height(
+        LONG *pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Height(
+        LONG Height) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocationName(
+        BSTR *LocationName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocationURL(
+        BSTR *LocationURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Busy(
+        VARIANT_BOOL *pBool) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWebBrowser, 0xeab22ac1, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b)
+#endif
 #else
-  typedef struct IWebBrowserVtbl {
+typedef struct IWebBrowserVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IWebBrowser *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IWebBrowser *This);
-      ULONG (WINAPI *Release)(IWebBrowser *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IWebBrowser *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IWebBrowser *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IWebBrowser *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IWebBrowser *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *GoBack)(IWebBrowser *This);
-      HRESULT (WINAPI *GoForward)(IWebBrowser *This);
-      HRESULT (WINAPI *GoHome)(IWebBrowser *This);
-      HRESULT (WINAPI *GoSearch)(IWebBrowser *This);
-      HRESULT (WINAPI *Navigate)(IWebBrowser *This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-      HRESULT (WINAPI *Refresh)(IWebBrowser *This);
-      HRESULT (WINAPI *Refresh2)(IWebBrowser *This,VARIANT *Level);
-      HRESULT (WINAPI *Stop)(IWebBrowser *This);
-      HRESULT (WINAPI *get_Application)(IWebBrowser *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Parent)(IWebBrowser *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Container)(IWebBrowser *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Document)(IWebBrowser *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_TopLevelContainer)(IWebBrowser *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *get_Type)(IWebBrowser *This,BSTR *Type);
-      HRESULT (WINAPI *get_Left)(IWebBrowser *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Left)(IWebBrowser *This,__LONG32 Left);
-      HRESULT (WINAPI *get_Top)(IWebBrowser *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Top)(IWebBrowser *This,__LONG32 Top);
-      HRESULT (WINAPI *get_Width)(IWebBrowser *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Width)(IWebBrowser *This,__LONG32 Width);
-      HRESULT (WINAPI *get_Height)(IWebBrowser *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Height)(IWebBrowser *This,__LONG32 Height);
-      HRESULT (WINAPI *get_LocationName)(IWebBrowser *This,BSTR *LocationName);
-      HRESULT (WINAPI *get_LocationURL)(IWebBrowser *This,BSTR *LocationURL);
-      HRESULT (WINAPI *get_Busy)(IWebBrowser *This,VARIANT_BOOL *pBool);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWebBrowser* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWebBrowser* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWebBrowser* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWebBrowser* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWebBrowser* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWebBrowser* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWebBrowser* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWebBrowser methods ***/
+    HRESULT (STDMETHODCALLTYPE *GoBack)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoForward)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoHome)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoSearch)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IWebBrowser* This,
+        BSTR URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh2)(
+        IWebBrowser* This,
+        VARIANT *Level);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_Application)(
+        IWebBrowser* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parent)(
+        IWebBrowser* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Container)(
+        IWebBrowser* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Document)(
+        IWebBrowser* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)(
+        IWebBrowser* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IWebBrowser* This,
+        BSTR *Type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IWebBrowser* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IWebBrowser* This,
+        LONG Left);
+
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IWebBrowser* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IWebBrowser* This,
+        LONG Top);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IWebBrowser* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IWebBrowser* This,
+        LONG Width);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IWebBrowser* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IWebBrowser* This,
+        LONG Height);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationName)(
+        IWebBrowser* This,
+        BSTR *LocationName);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationURL)(
+        IWebBrowser* This,
+        BSTR *LocationURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_Busy)(
+        IWebBrowser* This,
+        VARIANT_BOOL *pBool);
+
     END_INTERFACE
-  } IWebBrowserVtbl;
-  struct IWebBrowser {
-    CONST_VTBL struct IWebBrowserVtbl *lpVtbl;
-  };
+} IWebBrowserVtbl;
+interface IWebBrowser {
+    CONST_VTBL IWebBrowserVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWebBrowser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWebBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWebBrowser_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IWebBrowser_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IWebBrowser_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IWebBrowser_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IWebBrowser_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWebBrowser methods ***/
 #define IWebBrowser_GoBack(This) (This)->lpVtbl->GoBack(This)
 #define IWebBrowser_GoForward(This) (This)->lpVtbl->GoForward(This)
 #define IWebBrowser_GoHome(This) (This)->lpVtbl->GoHome(This)
@@ -338,188 +523,750 @@
 #define IWebBrowser_get_LocationName(This,LocationName) (This)->lpVtbl->get_LocationName(This,LocationName)
 #define IWebBrowser_get_LocationURL(This,LocationURL) (This)->lpVtbl->get_LocationURL(This,LocationURL)
 #define IWebBrowser_get_Busy(This,pBool) (This)->lpVtbl->get_Busy(This,pBool)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWebBrowser_QueryInterface(IWebBrowser* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWebBrowser_AddRef(IWebBrowser* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWebBrowser_Release(IWebBrowser* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWebBrowser_GetTypeInfoCount(IWebBrowser* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWebBrowser_GetTypeInfo(IWebBrowser* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWebBrowser_GetIDsOfNames(IWebBrowser* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWebBrowser_Invoke(IWebBrowser* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWebBrowser methods ***/
+static FORCEINLINE HRESULT IWebBrowser_GoBack(IWebBrowser* This) {
+    return This->lpVtbl->GoBack(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_GoForward(IWebBrowser* This) {
+    return This->lpVtbl->GoForward(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_GoHome(IWebBrowser* This) {
+    return This->lpVtbl->GoHome(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_GoSearch(IWebBrowser* This) {
+    return This->lpVtbl->GoSearch(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_Navigate(IWebBrowser* This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) {
+    return This->lpVtbl->Navigate(This,URL,Flags,TargetFrameName,PostData,Headers);
+}
+static FORCEINLINE HRESULT IWebBrowser_Refresh(IWebBrowser* This) {
+    return This->lpVtbl->Refresh(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_Refresh2(IWebBrowser* This,VARIANT *Level) {
+    return This->lpVtbl->Refresh2(This,Level);
+}
+static FORCEINLINE HRESULT IWebBrowser_Stop(IWebBrowser* This) {
+    return This->lpVtbl->Stop(This);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Application(IWebBrowser* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Application(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Parent(IWebBrowser* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Parent(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Container(IWebBrowser* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Container(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Document(IWebBrowser* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Document(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_TopLevelContainer(IWebBrowser* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_TopLevelContainer(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Type(IWebBrowser* This,BSTR *Type) {
+    return This->lpVtbl->get_Type(This,Type);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Left(IWebBrowser* This,LONG *pl) {
+    return This->lpVtbl->get_Left(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser_put_Left(IWebBrowser* This,LONG Left) {
+    return This->lpVtbl->put_Left(This,Left);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Top(IWebBrowser* This,LONG *pl) {
+    return This->lpVtbl->get_Top(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser_put_Top(IWebBrowser* This,LONG Top) {
+    return This->lpVtbl->put_Top(This,Top);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Width(IWebBrowser* This,LONG *pl) {
+    return This->lpVtbl->get_Width(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser_put_Width(IWebBrowser* This,LONG Width) {
+    return This->lpVtbl->put_Width(This,Width);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Height(IWebBrowser* This,LONG *pl) {
+    return This->lpVtbl->get_Height(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser_put_Height(IWebBrowser* This,LONG Height) {
+    return This->lpVtbl->put_Height(This,Height);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_LocationName(IWebBrowser* This,BSTR *LocationName) {
+    return This->lpVtbl->get_LocationName(This,LocationName);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_LocationURL(IWebBrowser* This,BSTR *LocationURL) {
+    return This->lpVtbl->get_LocationURL(This,LocationURL);
+}
+static FORCEINLINE HRESULT IWebBrowser_get_Busy(IWebBrowser* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_Busy(This,pBool);
+}
 #endif
 #endif
-  HRESULT WINAPI IWebBrowser_GoBack_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_GoBack_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_GoForward_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_GoForward_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_GoHome_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_GoHome_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_GoSearch_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_GoSearch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_Navigate_Proxy(IWebBrowser *This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-  void __RPC_STUB IWebBrowser_Navigate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_Refresh_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_Refresh_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_Refresh2_Proxy(IWebBrowser *This,VARIANT *Level);
-  void __RPC_STUB IWebBrowser_Refresh2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_Stop_Proxy(IWebBrowser *This);
-  void __RPC_STUB IWebBrowser_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Application_Proxy(IWebBrowser *This,IDispatch **ppDisp);
-  void __RPC_STUB IWebBrowser_get_Application_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Parent_Proxy(IWebBrowser *This,IDispatch **ppDisp);
-  void __RPC_STUB IWebBrowser_get_Parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Container_Proxy(IWebBrowser *This,IDispatch **ppDisp);
-  void __RPC_STUB IWebBrowser_get_Container_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Document_Proxy(IWebBrowser *This,IDispatch **ppDisp);
-  void __RPC_STUB IWebBrowser_get_Document_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_TopLevelContainer_Proxy(IWebBrowser *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IWebBrowser_get_TopLevelContainer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Type_Proxy(IWebBrowser *This,BSTR *Type);
-  void __RPC_STUB IWebBrowser_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Left_Proxy(IWebBrowser *This,__LONG32 *pl);
-  void __RPC_STUB IWebBrowser_get_Left_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_put_Left_Proxy(IWebBrowser *This,__LONG32 Left);
-  void __RPC_STUB IWebBrowser_put_Left_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Top_Proxy(IWebBrowser *This,__LONG32 *pl);
-  void __RPC_STUB IWebBrowser_get_Top_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_put_Top_Proxy(IWebBrowser *This,__LONG32 Top);
-  void __RPC_STUB IWebBrowser_put_Top_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Width_Proxy(IWebBrowser *This,__LONG32 *pl);
-  void __RPC_STUB IWebBrowser_get_Width_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_put_Width_Proxy(IWebBrowser *This,__LONG32 Width);
-  void __RPC_STUB IWebBrowser_put_Width_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Height_Proxy(IWebBrowser *This,__LONG32 *pl);
-  void __RPC_STUB IWebBrowser_get_Height_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_put_Height_Proxy(IWebBrowser *This,__LONG32 Height);
-  void __RPC_STUB IWebBrowser_put_Height_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_LocationName_Proxy(IWebBrowser *This,BSTR *LocationName);
-  void __RPC_STUB IWebBrowser_get_LocationName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_LocationURL_Proxy(IWebBrowser *This,BSTR *LocationURL);
-  void __RPC_STUB IWebBrowser_get_LocationURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser_get_Busy_Proxy(IWebBrowser *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IWebBrowser_get_Busy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE IWebBrowser_GoBack_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoBack_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_GoForward_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoForward_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_GoHome_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoHome_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_GoSearch_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoSearch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_Navigate_Proxy(
+    IWebBrowser* This,
+    BSTR URL,
+    VARIANT *Flags,
+    VARIANT *TargetFrameName,
+    VARIANT *PostData,
+    VARIANT *Headers);
+void __RPC_STUB IWebBrowser_Navigate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_Refresh_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_Refresh_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_Refresh2_Proxy(
+    IWebBrowser* This,
+    VARIANT *Level);
+void __RPC_STUB IWebBrowser_Refresh2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_Stop_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_Stop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Application_Proxy(
+    IWebBrowser* This,
+    IDispatch **ppDisp);
+void __RPC_STUB IWebBrowser_get_Application_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Parent_Proxy(
+    IWebBrowser* This,
+    IDispatch **ppDisp);
+void __RPC_STUB IWebBrowser_get_Parent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Container_Proxy(
+    IWebBrowser* This,
+    IDispatch **ppDisp);
+void __RPC_STUB IWebBrowser_get_Container_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Document_Proxy(
+    IWebBrowser* This,
+    IDispatch **ppDisp);
+void __RPC_STUB IWebBrowser_get_Document_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_TopLevelContainer_Proxy(
+    IWebBrowser* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IWebBrowser_get_TopLevelContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Type_Proxy(
+    IWebBrowser* This,
+    BSTR *Type);
+void __RPC_STUB IWebBrowser_get_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Left_Proxy(
+    IWebBrowser* This,
+    LONG *pl);
+void __RPC_STUB IWebBrowser_get_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_put_Left_Proxy(
+    IWebBrowser* This,
+    LONG Left);
+void __RPC_STUB IWebBrowser_put_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Top_Proxy(
+    IWebBrowser* This,
+    LONG *pl);
+void __RPC_STUB IWebBrowser_get_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_put_Top_Proxy(
+    IWebBrowser* This,
+    LONG Top);
+void __RPC_STUB IWebBrowser_put_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Width_Proxy(
+    IWebBrowser* This,
+    LONG *pl);
+void __RPC_STUB IWebBrowser_get_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_put_Width_Proxy(
+    IWebBrowser* This,
+    LONG Width);
+void __RPC_STUB IWebBrowser_put_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Height_Proxy(
+    IWebBrowser* This,
+    LONG *pl);
+void __RPC_STUB IWebBrowser_get_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_put_Height_Proxy(
+    IWebBrowser* This,
+    LONG Height);
+void __RPC_STUB IWebBrowser_put_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_LocationName_Proxy(
+    IWebBrowser* This,
+    BSTR *LocationName);
+void __RPC_STUB IWebBrowser_get_LocationName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_LocationURL_Proxy(
+    IWebBrowser* This,
+    BSTR *LocationURL);
+void __RPC_STUB IWebBrowser_get_LocationURL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser_get_Busy_Proxy(
+    IWebBrowser* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IWebBrowser_get_Busy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWebBrowser_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * DWebBrowserEvents dispinterface
+ */
 #ifndef __DWebBrowserEvents_DISPINTERFACE_DEFINED__
 #define __DWebBrowserEvents_DISPINTERFACE_DEFINED__
-  EXTERN_C const IID DIID_DWebBrowserEvents;
+
+DEFINE_GUID(DIID_DWebBrowserEvents, 0xeab22ac2, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct DWebBrowserEvents : public IDispatch {
-  };
+MIDL_INTERFACE("eab22ac2-30c1-11cf-a7eb-0000c05bae0b")
+DWebBrowserEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DWebBrowserEvents, 0xeab22ac2, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b)
+#endif
 #else
-  typedef struct DWebBrowserEventsVtbl {
+typedef struct DWebBrowserEventsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(DWebBrowserEvents *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(DWebBrowserEvents *This);
-      ULONG (WINAPI *Release)(DWebBrowserEvents *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(DWebBrowserEvents *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(DWebBrowserEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(DWebBrowserEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(DWebBrowserEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        DWebBrowserEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        DWebBrowserEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        DWebBrowserEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        DWebBrowserEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        DWebBrowserEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        DWebBrowserEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        DWebBrowserEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
     END_INTERFACE
-  } DWebBrowserEventsVtbl;
-  struct DWebBrowserEvents {
-    CONST_VTBL struct DWebBrowserEventsVtbl *lpVtbl;
-  };
+} DWebBrowserEventsVtbl;
+interface DWebBrowserEvents {
+    CONST_VTBL DWebBrowserEventsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define DWebBrowserEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define DWebBrowserEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define DWebBrowserEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define DWebBrowserEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define DWebBrowserEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define DWebBrowserEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define DWebBrowserEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#endif
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT DWebBrowserEvents_QueryInterface(DWebBrowserEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG DWebBrowserEvents_AddRef(DWebBrowserEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG DWebBrowserEvents_Release(DWebBrowserEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT DWebBrowserEvents_GetTypeInfoCount(DWebBrowserEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents_GetTypeInfo(DWebBrowserEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents_GetIDsOfNames(DWebBrowserEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents_Invoke(DWebBrowserEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
 #endif
 #endif
 
+#endif
+
+#endif  /* __DWebBrowserEvents_DISPINTERFACE_DEFINED__ */
+
+typedef enum CommandStateChangeConstants {
+    CSC_UPDATECOMMANDS = -1,
+    CSC_NAVIGATEFORWARD = 1,
+    CSC_NAVIGATEBACK = 2
+} CommandStateChangeConstants;
+/*****************************************************************************
+ * IWebBrowserApp interface
+ */
 #ifndef __IWebBrowserApp_INTERFACE_DEFINED__
 #define __IWebBrowserApp_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IWebBrowserApp;
+
+DEFINE_GUID(IID_IWebBrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IWebBrowserApp : public IWebBrowser {
-  public:
-    virtual HRESULT WINAPI Quit(void) = 0;
-    virtual HRESULT WINAPI ClientToWindow(int *pcx,int *pcy) = 0;
-    virtual HRESULT WINAPI PutProperty(BSTR Property,VARIANT vtValue) = 0;
-    virtual HRESULT WINAPI GetProperty(BSTR Property,VARIANT *pvtValue) = 0;
-    virtual HRESULT WINAPI get_Name(BSTR *Name) = 0;
-    virtual HRESULT WINAPI get_HWND(SHANDLE_PTR *pHWND) = 0;
-    virtual HRESULT WINAPI get_FullName(BSTR *FullName) = 0;
-    virtual HRESULT WINAPI get_Path(BSTR *Path) = 0;
-    virtual HRESULT WINAPI get_Visible(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI put_Visible(VARIANT_BOOL Value) = 0;
-    virtual HRESULT WINAPI get_StatusBar(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI put_StatusBar(VARIANT_BOOL Value) = 0;
-    virtual HRESULT WINAPI get_StatusText(BSTR *StatusText) = 0;
-    virtual HRESULT WINAPI put_StatusText(BSTR StatusText) = 0;
-    virtual HRESULT WINAPI get_ToolBar(int *Value) = 0;
-    virtual HRESULT WINAPI put_ToolBar(int Value) = 0;
-    virtual HRESULT WINAPI get_MenuBar(VARIANT_BOOL *Value) = 0;
-    virtual HRESULT WINAPI put_MenuBar(VARIANT_BOOL Value) = 0;
-    virtual HRESULT WINAPI get_FullScreen(VARIANT_BOOL *pbFullScreen) = 0;
-    virtual HRESULT WINAPI put_FullScreen(VARIANT_BOOL bFullScreen) = 0;
-  };
+MIDL_INTERFACE("0002df05-0000-0000-c000-000000000046")
+IWebBrowserApp : public IWebBrowser
+{
+    virtual HRESULT STDMETHODCALLTYPE Quit(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClientToWindow(
+        int *pcx,
+        int *pcy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutProperty(
+        BSTR Property,
+        VARIANT vtValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        BSTR Property,
+        VARIANT *pvtValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HWND(
+        SHANDLE_PTR *pHWND) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FullName(
+        BSTR *FullName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Path(
+        BSTR *Path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Visible(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Visible(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_StatusBar(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_StatusBar(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_StatusText(
+        BSTR *StatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_StatusText(
+        BSTR StatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ToolBar(
+        int *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ToolBar(
+        int Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MenuBar(
+        VARIANT_BOOL *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MenuBar(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FullScreen(
+        VARIANT_BOOL *pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FullScreen(
+        VARIANT_BOOL bFullScreen) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWebBrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
+#endif
 #else
-  typedef struct IWebBrowserAppVtbl {
+typedef struct IWebBrowserAppVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IWebBrowserApp *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IWebBrowserApp *This);
-      ULONG (WINAPI *Release)(IWebBrowserApp *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IWebBrowserApp *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IWebBrowserApp *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IWebBrowserApp *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IWebBrowserApp *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *GoBack)(IWebBrowserApp *This);
-      HRESULT (WINAPI *GoForward)(IWebBrowserApp *This);
-      HRESULT (WINAPI *GoHome)(IWebBrowserApp *This);
-      HRESULT (WINAPI *GoSearch)(IWebBrowserApp *This);
-      HRESULT (WINAPI *Navigate)(IWebBrowserApp *This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-      HRESULT (WINAPI *Refresh)(IWebBrowserApp *This);
-      HRESULT (WINAPI *Refresh2)(IWebBrowserApp *This,VARIANT *Level);
-      HRESULT (WINAPI *Stop)(IWebBrowserApp *This);
-      HRESULT (WINAPI *get_Application)(IWebBrowserApp *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Parent)(IWebBrowserApp *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Container)(IWebBrowserApp *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Document)(IWebBrowserApp *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_TopLevelContainer)(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *get_Type)(IWebBrowserApp *This,BSTR *Type);
-      HRESULT (WINAPI *get_Left)(IWebBrowserApp *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Left)(IWebBrowserApp *This,__LONG32 Left);
-      HRESULT (WINAPI *get_Top)(IWebBrowserApp *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Top)(IWebBrowserApp *This,__LONG32 Top);
-      HRESULT (WINAPI *get_Width)(IWebBrowserApp *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Width)(IWebBrowserApp *This,__LONG32 Width);
-      HRESULT (WINAPI *get_Height)(IWebBrowserApp *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Height)(IWebBrowserApp *This,__LONG32 Height);
-      HRESULT (WINAPI *get_LocationName)(IWebBrowserApp *This,BSTR *LocationName);
-      HRESULT (WINAPI *get_LocationURL)(IWebBrowserApp *This,BSTR *LocationURL);
-      HRESULT (WINAPI *get_Busy)(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *Quit)(IWebBrowserApp *This);
-      HRESULT (WINAPI *ClientToWindow)(IWebBrowserApp *This,int *pcx,int *pcy);
-      HRESULT (WINAPI *PutProperty)(IWebBrowserApp *This,BSTR Property,VARIANT vtValue);
-      HRESULT (WINAPI *GetProperty)(IWebBrowserApp *This,BSTR Property,VARIANT *pvtValue);
-      HRESULT (WINAPI *get_Name)(IWebBrowserApp *This,BSTR *Name);
-      HRESULT (WINAPI *get_HWND)(IWebBrowserApp *This,SHANDLE_PTR *pHWND);
-      HRESULT (WINAPI *get_FullName)(IWebBrowserApp *This,BSTR *FullName);
-      HRESULT (WINAPI *get_Path)(IWebBrowserApp *This,BSTR *Path);
-      HRESULT (WINAPI *get_Visible)(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *put_Visible)(IWebBrowserApp *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_StatusBar)(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *put_StatusBar)(IWebBrowserApp *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_StatusText)(IWebBrowserApp *This,BSTR *StatusText);
-      HRESULT (WINAPI *put_StatusText)(IWebBrowserApp *This,BSTR StatusText);
-      HRESULT (WINAPI *get_ToolBar)(IWebBrowserApp *This,int *Value);
-      HRESULT (WINAPI *put_ToolBar)(IWebBrowserApp *This,int Value);
-      HRESULT (WINAPI *get_MenuBar)(IWebBrowserApp *This,VARIANT_BOOL *Value);
-      HRESULT (WINAPI *put_MenuBar)(IWebBrowserApp *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_FullScreen)(IWebBrowserApp *This,VARIANT_BOOL *pbFullScreen);
-      HRESULT (WINAPI *put_FullScreen)(IWebBrowserApp *This,VARIANT_BOOL bFullScreen);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWebBrowserApp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWebBrowserApp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWebBrowserApp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWebBrowserApp* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWebBrowserApp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWebBrowserApp* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWebBrowserApp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWebBrowser methods ***/
+    HRESULT (STDMETHODCALLTYPE *GoBack)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoForward)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoHome)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoSearch)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IWebBrowserApp* This,
+        BSTR URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh2)(
+        IWebBrowserApp* This,
+        VARIANT *Level);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_Application)(
+        IWebBrowserApp* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parent)(
+        IWebBrowserApp* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Container)(
+        IWebBrowserApp* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Document)(
+        IWebBrowserApp* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IWebBrowserApp* This,
+        BSTR *Type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IWebBrowserApp* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IWebBrowserApp* This,
+        LONG Left);
+
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IWebBrowserApp* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IWebBrowserApp* This,
+        LONG Top);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IWebBrowserApp* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IWebBrowserApp* This,
+        LONG Width);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IWebBrowserApp* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IWebBrowserApp* This,
+        LONG Height);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationName)(
+        IWebBrowserApp* This,
+        BSTR *LocationName);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationURL)(
+        IWebBrowserApp* This,
+        BSTR *LocationURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_Busy)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *pBool);
+
+    /*** IWebBrowserApp methods ***/
+    HRESULT (STDMETHODCALLTYPE *Quit)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *ClientToWindow)(
+        IWebBrowserApp* This,
+        int *pcx,
+        int *pcy);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        IWebBrowserApp* This,
+        BSTR Property,
+        VARIANT vtValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IWebBrowserApp* This,
+        BSTR Property,
+        VARIANT *pvtValue);
+
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IWebBrowserApp* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_HWND)(
+        IWebBrowserApp* This,
+        SHANDLE_PTR *pHWND);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullName)(
+        IWebBrowserApp* This,
+        BSTR *FullName);
+
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IWebBrowserApp* This,
+        BSTR *Path);
+
+    HRESULT (STDMETHODCALLTYPE *get_Visible)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_Visible)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusText)(
+        IWebBrowserApp* This,
+        BSTR *StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusText)(
+        IWebBrowserApp* This,
+        BSTR StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *get_ToolBar)(
+        IWebBrowserApp* This,
+        int *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_ToolBar)(
+        IWebBrowserApp* This,
+        int Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_MenuBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_MenuBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullScreen)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL *pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *put_FullScreen)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL bFullScreen);
+
     END_INTERFACE
-  } IWebBrowserAppVtbl;
-  struct IWebBrowserApp {
-    CONST_VTBL struct IWebBrowserAppVtbl *lpVtbl;
-  };
+} IWebBrowserAppVtbl;
+interface IWebBrowserApp {
+    CONST_VTBL IWebBrowserAppVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWebBrowserApp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWebBrowserApp_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWebBrowserApp_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IWebBrowserApp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IWebBrowserApp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IWebBrowserApp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IWebBrowserApp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWebBrowser methods ***/
 #define IWebBrowserApp_GoBack(This) (This)->lpVtbl->GoBack(This)
 #define IWebBrowserApp_GoForward(This) (This)->lpVtbl->GoForward(This)
 #define IWebBrowserApp_GoHome(This) (This)->lpVtbl->GoHome(This)
@@ -545,6 +1292,7 @@
 #define IWebBrowserApp_get_LocationName(This,LocationName) (This)->lpVtbl->get_LocationName(This,LocationName)
 #define IWebBrowserApp_get_LocationURL(This,LocationURL) (This)->lpVtbl->get_LocationURL(This,LocationURL)
 #define IWebBrowserApp_get_Busy(This,pBool) (This)->lpVtbl->get_Busy(This,pBool)
+/*** IWebBrowserApp methods ***/
 #define IWebBrowserApp_Quit(This) (This)->lpVtbl->Quit(This)
 #define IWebBrowserApp_ClientToWindow(This,pcx,pcy) (This)->lpVtbl->ClientToWindow(This,pcx,pcy)
 #define IWebBrowserApp_PutProperty(This,Property,vtValue) (This)->lpVtbl->PutProperty(This,Property,vtValue)
@@ -565,163 +1313,752 @@
 #define IWebBrowserApp_put_MenuBar(This,Value) (This)->lpVtbl->put_MenuBar(This,Value)
 #define IWebBrowserApp_get_FullScreen(This,pbFullScreen) (This)->lpVtbl->get_FullScreen(This,pbFullScreen)
 #define IWebBrowserApp_put_FullScreen(This,bFullScreen) (This)->lpVtbl->put_FullScreen(This,bFullScreen)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWebBrowserApp_QueryInterface(IWebBrowserApp* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWebBrowserApp_AddRef(IWebBrowserApp* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWebBrowserApp_Release(IWebBrowserApp* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWebBrowserApp_GetTypeInfoCount(IWebBrowserApp* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GetTypeInfo(IWebBrowserApp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GetIDsOfNames(IWebBrowserApp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_Invoke(IWebBrowserApp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWebBrowser methods ***/
+static FORCEINLINE HRESULT IWebBrowserApp_GoBack(IWebBrowserApp* This) {
+    return This->lpVtbl->GoBack(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GoForward(IWebBrowserApp* This) {
+    return This->lpVtbl->GoForward(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GoHome(IWebBrowserApp* This) {
+    return This->lpVtbl->GoHome(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GoSearch(IWebBrowserApp* This) {
+    return This->lpVtbl->GoSearch(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_Navigate(IWebBrowserApp* This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) {
+    return This->lpVtbl->Navigate(This,URL,Flags,TargetFrameName,PostData,Headers);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_Refresh(IWebBrowserApp* This) {
+    return This->lpVtbl->Refresh(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_Refresh2(IWebBrowserApp* This,VARIANT *Level) {
+    return This->lpVtbl->Refresh2(This,Level);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_Stop(IWebBrowserApp* This) {
+    return This->lpVtbl->Stop(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Application(IWebBrowserApp* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Application(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Parent(IWebBrowserApp* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Parent(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Container(IWebBrowserApp* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Container(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Document(IWebBrowserApp* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Document(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_TopLevelContainer(IWebBrowserApp* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_TopLevelContainer(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Type(IWebBrowserApp* This,BSTR *Type) {
+    return This->lpVtbl->get_Type(This,Type);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Left(IWebBrowserApp* This,LONG *pl) {
+    return This->lpVtbl->get_Left(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_Left(IWebBrowserApp* This,LONG Left) {
+    return This->lpVtbl->put_Left(This,Left);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Top(IWebBrowserApp* This,LONG *pl) {
+    return This->lpVtbl->get_Top(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_Top(IWebBrowserApp* This,LONG Top) {
+    return This->lpVtbl->put_Top(This,Top);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Width(IWebBrowserApp* This,LONG *pl) {
+    return This->lpVtbl->get_Width(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_Width(IWebBrowserApp* This,LONG Width) {
+    return This->lpVtbl->put_Width(This,Width);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Height(IWebBrowserApp* This,LONG *pl) {
+    return This->lpVtbl->get_Height(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_Height(IWebBrowserApp* This,LONG Height) {
+    return This->lpVtbl->put_Height(This,Height);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_LocationName(IWebBrowserApp* This,BSTR *LocationName) {
+    return This->lpVtbl->get_LocationName(This,LocationName);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_LocationURL(IWebBrowserApp* This,BSTR *LocationURL) {
+    return This->lpVtbl->get_LocationURL(This,LocationURL);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Busy(IWebBrowserApp* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_Busy(This,pBool);
+}
+/*** IWebBrowserApp methods ***/
+static FORCEINLINE HRESULT IWebBrowserApp_Quit(IWebBrowserApp* This) {
+    return This->lpVtbl->Quit(This);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_ClientToWindow(IWebBrowserApp* This,int *pcx,int *pcy) {
+    return This->lpVtbl->ClientToWindow(This,pcx,pcy);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_PutProperty(IWebBrowserApp* This,BSTR Property,VARIANT vtValue) {
+    return This->lpVtbl->PutProperty(This,Property,vtValue);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_GetProperty(IWebBrowserApp* This,BSTR Property,VARIANT *pvtValue) {
+    return This->lpVtbl->GetProperty(This,Property,pvtValue);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Name(IWebBrowserApp* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_HWND(IWebBrowserApp* This,SHANDLE_PTR *pHWND) {
+    return This->lpVtbl->get_HWND(This,pHWND);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_FullName(IWebBrowserApp* This,BSTR *FullName) {
+    return This->lpVtbl->get_FullName(This,FullName);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Path(IWebBrowserApp* This,BSTR *Path) {
+    return This->lpVtbl->get_Path(This,Path);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_Visible(IWebBrowserApp* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_Visible(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_Visible(IWebBrowserApp* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_Visible(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_StatusBar(IWebBrowserApp* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_StatusBar(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_StatusBar(IWebBrowserApp* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_StatusBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_StatusText(IWebBrowserApp* This,BSTR *StatusText) {
+    return This->lpVtbl->get_StatusText(This,StatusText);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_StatusText(IWebBrowserApp* This,BSTR StatusText) {
+    return This->lpVtbl->put_StatusText(This,StatusText);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_ToolBar(IWebBrowserApp* This,int *Value) {
+    return This->lpVtbl->get_ToolBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_ToolBar(IWebBrowserApp* This,int Value) {
+    return This->lpVtbl->put_ToolBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_MenuBar(IWebBrowserApp* This,VARIANT_BOOL *Value) {
+    return This->lpVtbl->get_MenuBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_MenuBar(IWebBrowserApp* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_MenuBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_get_FullScreen(IWebBrowserApp* This,VARIANT_BOOL *pbFullScreen) {
+    return This->lpVtbl->get_FullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWebBrowserApp_put_FullScreen(IWebBrowserApp* This,VARIANT_BOOL bFullScreen) {
+    return This->lpVtbl->put_FullScreen(This,bFullScreen);
+}
 #endif
 #endif
-  HRESULT WINAPI IWebBrowserApp_Quit_Proxy(IWebBrowserApp *This);
-  void __RPC_STUB IWebBrowserApp_Quit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_ClientToWindow_Proxy(IWebBrowserApp *This,int *pcx,int *pcy);
-  void __RPC_STUB IWebBrowserApp_ClientToWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_PutProperty_Proxy(IWebBrowserApp *This,BSTR Property,VARIANT vtValue);
-  void __RPC_STUB IWebBrowserApp_PutProperty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_GetProperty_Proxy(IWebBrowserApp *This,BSTR Property,VARIANT *pvtValue);
-  void __RPC_STUB IWebBrowserApp_GetProperty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_Name_Proxy(IWebBrowserApp *This,BSTR *Name);
-  void __RPC_STUB IWebBrowserApp_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_HWND_Proxy(IWebBrowserApp *This,SHANDLE_PTR *pHWND);
-  void __RPC_STUB IWebBrowserApp_get_HWND_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_FullName_Proxy(IWebBrowserApp *This,BSTR *FullName);
-  void __RPC_STUB IWebBrowserApp_get_FullName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_Path_Proxy(IWebBrowserApp *This,BSTR *Path);
-  void __RPC_STUB IWebBrowserApp_get_Path_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_Visible_Proxy(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IWebBrowserApp_get_Visible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_Visible_Proxy(IWebBrowserApp *This,VARIANT_BOOL Value);
-  void __RPC_STUB IWebBrowserApp_put_Visible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_StatusBar_Proxy(IWebBrowserApp *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IWebBrowserApp_get_StatusBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_StatusBar_Proxy(IWebBrowserApp *This,VARIANT_BOOL Value);
-  void __RPC_STUB IWebBrowserApp_put_StatusBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_StatusText_Proxy(IWebBrowserApp *This,BSTR *StatusText);
-  void __RPC_STUB IWebBrowserApp_get_StatusText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_StatusText_Proxy(IWebBrowserApp *This,BSTR StatusText);
-  void __RPC_STUB IWebBrowserApp_put_StatusText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_ToolBar_Proxy(IWebBrowserApp *This,int *Value);
-  void __RPC_STUB IWebBrowserApp_get_ToolBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_ToolBar_Proxy(IWebBrowserApp *This,int Value);
-  void __RPC_STUB IWebBrowserApp_put_ToolBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_MenuBar_Proxy(IWebBrowserApp *This,VARIANT_BOOL *Value);
-  void __RPC_STUB IWebBrowserApp_get_MenuBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_MenuBar_Proxy(IWebBrowserApp *This,VARIANT_BOOL Value);
-  void __RPC_STUB IWebBrowserApp_put_MenuBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_get_FullScreen_Proxy(IWebBrowserApp *This,VARIANT_BOOL *pbFullScreen);
-  void __RPC_STUB IWebBrowserApp_get_FullScreen_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowserApp_put_FullScreen_Proxy(IWebBrowserApp *This,VARIANT_BOOL bFullScreen);
-  void __RPC_STUB IWebBrowserApp_put_FullScreen_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_Quit_Proxy(
+    IWebBrowserApp* This);
+void __RPC_STUB IWebBrowserApp_Quit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_ClientToWindow_Proxy(
+    IWebBrowserApp* This,
+    int *pcx,
+    int *pcy);
+void __RPC_STUB IWebBrowserApp_ClientToWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_PutProperty_Proxy(
+    IWebBrowserApp* This,
+    BSTR Property,
+    VARIANT vtValue);
+void __RPC_STUB IWebBrowserApp_PutProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_GetProperty_Proxy(
+    IWebBrowserApp* This,
+    BSTR Property,
+    VARIANT *pvtValue);
+void __RPC_STUB IWebBrowserApp_GetProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_Name_Proxy(
+    IWebBrowserApp* This,
+    BSTR *Name);
+void __RPC_STUB IWebBrowserApp_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_HWND_Proxy(
+    IWebBrowserApp* This,
+    SHANDLE_PTR *pHWND);
+void __RPC_STUB IWebBrowserApp_get_HWND_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_FullName_Proxy(
+    IWebBrowserApp* This,
+    BSTR *FullName);
+void __RPC_STUB IWebBrowserApp_get_FullName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_Path_Proxy(
+    IWebBrowserApp* This,
+    BSTR *Path);
+void __RPC_STUB IWebBrowserApp_get_Path_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_Visible_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IWebBrowserApp_get_Visible_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_Visible_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_Visible_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_StatusBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IWebBrowserApp_get_StatusBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_StatusBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_StatusBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_StatusText_Proxy(
+    IWebBrowserApp* This,
+    BSTR *StatusText);
+void __RPC_STUB IWebBrowserApp_get_StatusText_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_StatusText_Proxy(
+    IWebBrowserApp* This,
+    BSTR StatusText);
+void __RPC_STUB IWebBrowserApp_put_StatusText_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_ToolBar_Proxy(
+    IWebBrowserApp* This,
+    int *Value);
+void __RPC_STUB IWebBrowserApp_get_ToolBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_ToolBar_Proxy(
+    IWebBrowserApp* This,
+    int Value);
+void __RPC_STUB IWebBrowserApp_put_ToolBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_MenuBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL *Value);
+void __RPC_STUB IWebBrowserApp_get_MenuBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_MenuBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_MenuBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_get_FullScreen_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL *pbFullScreen);
+void __RPC_STUB IWebBrowserApp_get_FullScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowserApp_put_FullScreen_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL bFullScreen);
+void __RPC_STUB IWebBrowserApp_put_FullScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWebBrowserApp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWebBrowser2 interface
+ */
 #ifndef __IWebBrowser2_INTERFACE_DEFINED__
 #define __IWebBrowser2_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IWebBrowser2;
+
+DEFINE_GUID(IID_IWebBrowser2, 0xd30c1661, 0xcdaf, 0x11d0, 0x8a,0x3e, 0x00,0xc0,0x4f,0xc9,0xe2,0x6e);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IWebBrowser2 : public IWebBrowserApp {
-  public:
-    virtual HRESULT WINAPI Navigate2(VARIANT *URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) = 0;
-    virtual HRESULT WINAPI QueryStatusWB(OLECMDID cmdID,OLECMDF *pcmdf) = 0;
-    virtual HRESULT WINAPI ExecWB(OLECMDID cmdID,OLECMDEXECOPT cmdexecopt,VARIANT *pvaIn,VARIANT *pvaOut) = 0;
-    virtual HRESULT WINAPI ShowBrowserBar(VARIANT *pvaClsid,VARIANT *pvarShow,VARIANT *pvarSize) = 0;
-    virtual HRESULT WINAPI get_ReadyState(READYSTATE *plReadyState) = 0;
-    virtual HRESULT WINAPI get_Offline(VARIANT_BOOL *pbOffline) = 0;
-    virtual HRESULT WINAPI put_Offline(VARIANT_BOOL bOffline) = 0;
-    virtual HRESULT WINAPI get_Silent(VARIANT_BOOL *pbSilent) = 0;
-    virtual HRESULT WINAPI put_Silent(VARIANT_BOOL bSilent) = 0;
-    virtual HRESULT WINAPI get_RegisterAsBrowser(VARIANT_BOOL *pbRegister) = 0;
-    virtual HRESULT WINAPI put_RegisterAsBrowser(VARIANT_BOOL bRegister) = 0;
-    virtual HRESULT WINAPI get_RegisterAsDropTarget(VARIANT_BOOL *pbRegister) = 0;
-    virtual HRESULT WINAPI put_RegisterAsDropTarget(VARIANT_BOOL bRegister) = 0;
-    virtual HRESULT WINAPI get_TheaterMode(VARIANT_BOOL *pbRegister) = 0;
-    virtual HRESULT WINAPI put_TheaterMode(VARIANT_BOOL bRegister) = 0;
-    virtual HRESULT WINAPI get_AddressBar(VARIANT_BOOL *Value) = 0;
-    virtual HRESULT WINAPI put_AddressBar(VARIANT_BOOL Value) = 0;
-    virtual HRESULT WINAPI get_Resizable(VARIANT_BOOL *Value) = 0;
-    virtual HRESULT WINAPI put_Resizable(VARIANT_BOOL Value) = 0;
-  };
+MIDL_INTERFACE("d30c1661-cdaf-11d0-8a3e-00c04fc9e26e")
+IWebBrowser2 : public IWebBrowserApp
+{
+    virtual HRESULT STDMETHODCALLTYPE Navigate2(
+        VARIANT *URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryStatusWB(
+        OLECMDID cmdID,
+        OLECMDF *pcmdf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExecWB(
+        OLECMDID cmdID,
+        OLECMDEXECOPT cmdexecopt,
+        VARIANT *pvaIn,
+        VARIANT *pvaOut) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar(
+        VARIANT *pvaClsid,
+        VARIANT *pvarShow,
+        VARIANT *pvarSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ReadyState(
+        READYSTATE *plReadyState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Offline(
+        VARIANT_BOOL *pbOffline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Offline(
+        VARIANT_BOOL bOffline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Silent(
+        VARIANT_BOOL *pbSilent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Silent(
+        VARIANT_BOOL bSilent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RegisterAsBrowser(
+        VARIANT_BOOL *pbRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_RegisterAsBrowser(
+        VARIANT_BOOL bRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RegisterAsDropTarget(
+        VARIANT_BOOL *pbRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_RegisterAsDropTarget(
+        VARIANT_BOOL bRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TheaterMode(
+        VARIANT_BOOL *pbRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TheaterMode(
+        VARIANT_BOOL bRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AddressBar(
+        VARIANT_BOOL *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AddressBar(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Resizable(
+        VARIANT_BOOL *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Resizable(
+        VARIANT_BOOL Value) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWebBrowser2, 0xd30c1661, 0xcdaf, 0x11d0, 0x8a,0x3e, 0x00,0xc0,0x4f,0xc9,0xe2,0x6e)
+#endif
 #else
-  typedef struct IWebBrowser2Vtbl {
+typedef struct IWebBrowser2Vtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IWebBrowser2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IWebBrowser2 *This);
-      ULONG (WINAPI *Release)(IWebBrowser2 *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IWebBrowser2 *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IWebBrowser2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IWebBrowser2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IWebBrowser2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *GoBack)(IWebBrowser2 *This);
-      HRESULT (WINAPI *GoForward)(IWebBrowser2 *This);
-      HRESULT (WINAPI *GoHome)(IWebBrowser2 *This);
-      HRESULT (WINAPI *GoSearch)(IWebBrowser2 *This);
-      HRESULT (WINAPI *Navigate)(IWebBrowser2 *This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-      HRESULT (WINAPI *Refresh)(IWebBrowser2 *This);
-      HRESULT (WINAPI *Refresh2)(IWebBrowser2 *This,VARIANT *Level);
-      HRESULT (WINAPI *Stop)(IWebBrowser2 *This);
-      HRESULT (WINAPI *get_Application)(IWebBrowser2 *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Parent)(IWebBrowser2 *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Container)(IWebBrowser2 *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_Document)(IWebBrowser2 *This,IDispatch **ppDisp);
-      HRESULT (WINAPI *get_TopLevelContainer)(IWebBrowser2 *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *get_Type)(IWebBrowser2 *This,BSTR *Type);
-      HRESULT (WINAPI *get_Left)(IWebBrowser2 *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Left)(IWebBrowser2 *This,__LONG32 Left);
-      HRESULT (WINAPI *get_Top)(IWebBrowser2 *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Top)(IWebBrowser2 *This,__LONG32 Top);
-      HRESULT (WINAPI *get_Width)(IWebBrowser2 *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Width)(IWebBrowser2 *This,__LONG32 Width);
-      HRESULT (WINAPI *get_Height)(IWebBrowser2 *This,__LONG32 *pl);
-      HRESULT (WINAPI *put_Height)(IWebBrowser2 *This,__LONG32 Height);
-      HRESULT (WINAPI *get_LocationName)(IWebBrowser2 *This,BSTR *LocationName);
-      HRESULT (WINAPI *get_LocationURL)(IWebBrowser2 *This,BSTR *LocationURL);
-      HRESULT (WINAPI *get_Busy)(IWebBrowser2 *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *Quit)(IWebBrowser2 *This);
-      HRESULT (WINAPI *ClientToWindow)(IWebBrowser2 *This,int *pcx,int *pcy);
-      HRESULT (WINAPI *PutProperty)(IWebBrowser2 *This,BSTR Property,VARIANT vtValue);
-      HRESULT (WINAPI *GetProperty)(IWebBrowser2 *This,BSTR Property,VARIANT *pvtValue);
-      HRESULT (WINAPI *get_Name)(IWebBrowser2 *This,BSTR *Name);
-      HRESULT (WINAPI *get_HWND)(IWebBrowser2 *This,SHANDLE_PTR *pHWND);
-      HRESULT (WINAPI *get_FullName)(IWebBrowser2 *This,BSTR *FullName);
-      HRESULT (WINAPI *get_Path)(IWebBrowser2 *This,BSTR *Path);
-      HRESULT (WINAPI *get_Visible)(IWebBrowser2 *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *put_Visible)(IWebBrowser2 *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_StatusBar)(IWebBrowser2 *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *put_StatusBar)(IWebBrowser2 *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_StatusText)(IWebBrowser2 *This,BSTR *StatusText);
-      HRESULT (WINAPI *put_StatusText)(IWebBrowser2 *This,BSTR StatusText);
-      HRESULT (WINAPI *get_ToolBar)(IWebBrowser2 *This,int *Value);
-      HRESULT (WINAPI *put_ToolBar)(IWebBrowser2 *This,int Value);
-      HRESULT (WINAPI *get_MenuBar)(IWebBrowser2 *This,VARIANT_BOOL *Value);
-      HRESULT (WINAPI *put_MenuBar)(IWebBrowser2 *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_FullScreen)(IWebBrowser2 *This,VARIANT_BOOL *pbFullScreen);
-      HRESULT (WINAPI *put_FullScreen)(IWebBrowser2 *This,VARIANT_BOOL bFullScreen);
-      HRESULT (WINAPI *Navigate2)(IWebBrowser2 *This,VARIANT *URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-      HRESULT (WINAPI *QueryStatusWB)(IWebBrowser2 *This,OLECMDID cmdID,OLECMDF *pcmdf);
-      HRESULT (WINAPI *ExecWB)(IWebBrowser2 *This,OLECMDID cmdID,OLECMDEXECOPT cmdexecopt,VARIANT *pvaIn,VARIANT *pvaOut);
-      HRESULT (WINAPI *ShowBrowserBar)(IWebBrowser2 *This,VARIANT *pvaClsid,VARIANT *pvarShow,VARIANT *pvarSize);
-      HRESULT (WINAPI *get_ReadyState)(IWebBrowser2 *This,READYSTATE *plReadyState);
-      HRESULT (WINAPI *get_Offline)(IWebBrowser2 *This,VARIANT_BOOL *pbOffline);
-      HRESULT (WINAPI *put_Offline)(IWebBrowser2 *This,VARIANT_BOOL bOffline);
-      HRESULT (WINAPI *get_Silent)(IWebBrowser2 *This,VARIANT_BOOL *pbSilent);
-      HRESULT (WINAPI *put_Silent)(IWebBrowser2 *This,VARIANT_BOOL bSilent);
-      HRESULT (WINAPI *get_RegisterAsBrowser)(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-      HRESULT (WINAPI *put_RegisterAsBrowser)(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-      HRESULT (WINAPI *get_RegisterAsDropTarget)(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-      HRESULT (WINAPI *put_RegisterAsDropTarget)(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-      HRESULT (WINAPI *get_TheaterMode)(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-      HRESULT (WINAPI *put_TheaterMode)(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-      HRESULT (WINAPI *get_AddressBar)(IWebBrowser2 *This,VARIANT_BOOL *Value);
-      HRESULT (WINAPI *put_AddressBar)(IWebBrowser2 *This,VARIANT_BOOL Value);
-      HRESULT (WINAPI *get_Resizable)(IWebBrowser2 *This,VARIANT_BOOL *Value);
-      HRESULT (WINAPI *put_Resizable)(IWebBrowser2 *This,VARIANT_BOOL Value);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWebBrowser2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWebBrowser2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWebBrowser2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWebBrowser2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWebBrowser2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWebBrowser2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWebBrowser2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWebBrowser methods ***/
+    HRESULT (STDMETHODCALLTYPE *GoBack)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoForward)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoHome)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoSearch)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IWebBrowser2* This,
+        BSTR URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh2)(
+        IWebBrowser2* This,
+        VARIANT *Level);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_Application)(
+        IWebBrowser2* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parent)(
+        IWebBrowser2* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Container)(
+        IWebBrowser2* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Document)(
+        IWebBrowser2* This,
+        IDispatch **ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IWebBrowser2* This,
+        BSTR *Type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IWebBrowser2* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IWebBrowser2* This,
+        LONG Left);
+
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IWebBrowser2* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IWebBrowser2* This,
+        LONG Top);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IWebBrowser2* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IWebBrowser2* This,
+        LONG Width);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IWebBrowser2* This,
+        LONG *pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IWebBrowser2* This,
+        LONG Height);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationName)(
+        IWebBrowser2* This,
+        BSTR *LocationName);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationURL)(
+        IWebBrowser2* This,
+        BSTR *LocationURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_Busy)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pBool);
+
+    /*** IWebBrowserApp methods ***/
+    HRESULT (STDMETHODCALLTYPE *Quit)(
+        IWebBrowser2* This);
+
+    HRESULT (STDMETHODCALLTYPE *ClientToWindow)(
+        IWebBrowser2* This,
+        int *pcx,
+        int *pcy);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        IWebBrowser2* This,
+        BSTR Property,
+        VARIANT vtValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IWebBrowser2* This,
+        BSTR Property,
+        VARIANT *pvtValue);
+
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IWebBrowser2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_HWND)(
+        IWebBrowser2* This,
+        SHANDLE_PTR *pHWND);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullName)(
+        IWebBrowser2* This,
+        BSTR *FullName);
+
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IWebBrowser2* This,
+        BSTR *Path);
+
+    HRESULT (STDMETHODCALLTYPE *get_Visible)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_Visible)(
+        IWebBrowser2* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusText)(
+        IWebBrowser2* This,
+        BSTR *StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusText)(
+        IWebBrowser2* This,
+        BSTR StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *get_ToolBar)(
+        IWebBrowser2* This,
+        int *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_ToolBar)(
+        IWebBrowser2* This,
+        int Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_MenuBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_MenuBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullScreen)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *put_FullScreen)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bFullScreen);
+
+    /*** IWebBrowser2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *Navigate2)(
+        IWebBrowser2* This,
+        VARIANT *URL,
+        VARIANT *Flags,
+        VARIANT *TargetFrameName,
+        VARIANT *PostData,
+        VARIANT *Headers);
+
+    HRESULT (STDMETHODCALLTYPE *QueryStatusWB)(
+        IWebBrowser2* This,
+        OLECMDID cmdID,
+        OLECMDF *pcmdf);
+
+    HRESULT (STDMETHODCALLTYPE *ExecWB)(
+        IWebBrowser2* This,
+        OLECMDID cmdID,
+        OLECMDEXECOPT cmdexecopt,
+        VARIANT *pvaIn,
+        VARIANT *pvaOut);
+
+    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
+        IWebBrowser2* This,
+        VARIANT *pvaClsid,
+        VARIANT *pvarShow,
+        VARIANT *pvarSize);
+
+    HRESULT (STDMETHODCALLTYPE *get_ReadyState)(
+        IWebBrowser2* This,
+        READYSTATE *plReadyState);
+
+    HRESULT (STDMETHODCALLTYPE *get_Offline)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbOffline);
+
+    HRESULT (STDMETHODCALLTYPE *put_Offline)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bOffline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Silent)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbSilent);
+
+    HRESULT (STDMETHODCALLTYPE *put_Silent)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bSilent);
+
+    HRESULT (STDMETHODCALLTYPE *get_RegisterAsBrowser)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbRegister);
+
+    HRESULT (STDMETHODCALLTYPE *put_RegisterAsBrowser)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bRegister);
+
+    HRESULT (STDMETHODCALLTYPE *get_RegisterAsDropTarget)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbRegister);
+
+    HRESULT (STDMETHODCALLTYPE *put_RegisterAsDropTarget)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bRegister);
+
+    HRESULT (STDMETHODCALLTYPE *get_TheaterMode)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *pbRegister);
+
+    HRESULT (STDMETHODCALLTYPE *put_TheaterMode)(
+        IWebBrowser2* This,
+        VARIANT_BOOL bRegister);
+
+    HRESULT (STDMETHODCALLTYPE *get_AddressBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_AddressBar)(
+        IWebBrowser2* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_Resizable)(
+        IWebBrowser2* This,
+        VARIANT_BOOL *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_Resizable)(
+        IWebBrowser2* This,
+        VARIANT_BOOL Value);
+
     END_INTERFACE
-  } IWebBrowser2Vtbl;
-  struct IWebBrowser2 {
-    CONST_VTBL struct IWebBrowser2Vtbl *lpVtbl;
-  };
+} IWebBrowser2Vtbl;
+interface IWebBrowser2 {
+    CONST_VTBL IWebBrowser2Vtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWebBrowser2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWebBrowser2_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWebBrowser2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IWebBrowser2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IWebBrowser2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IWebBrowser2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IWebBrowser2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWebBrowser methods ***/
 #define IWebBrowser2_GoBack(This) (This)->lpVtbl->GoBack(This)
 #define IWebBrowser2_GoForward(This) (This)->lpVtbl->GoForward(This)
 #define IWebBrowser2_GoHome(This) (This)->lpVtbl->GoHome(This)
@@ -747,6 +2084,7 @@
 #define IWebBrowser2_get_LocationName(This,LocationName) (This)->lpVtbl->get_LocationName(This,LocationName)
 #define IWebBrowser2_get_LocationURL(This,LocationURL) (This)->lpVtbl->get_LocationURL(This,LocationURL)
 #define IWebBrowser2_get_Busy(This,pBool) (This)->lpVtbl->get_Busy(This,pBool)
+/*** IWebBrowserApp methods ***/
 #define IWebBrowser2_Quit(This) (This)->lpVtbl->Quit(This)
 #define IWebBrowser2_ClientToWindow(This,pcx,pcy) (This)->lpVtbl->ClientToWindow(This,pcx,pcy)
 #define IWebBrowser2_PutProperty(This,Property,vtValue) (This)->lpVtbl->PutProperty(This,Property,vtValue)
@@ -767,6 +2105,7 @@
 #define IWebBrowser2_put_MenuBar(This,Value) (This)->lpVtbl->put_MenuBar(This,Value)
 #define IWebBrowser2_get_FullScreen(This,pbFullScreen) (This)->lpVtbl->get_FullScreen(This,pbFullScreen)
 #define IWebBrowser2_put_FullScreen(This,bFullScreen) (This)->lpVtbl->put_FullScreen(This,bFullScreen)
+/*** IWebBrowser2 methods ***/
 #define IWebBrowser2_Navigate2(This,URL,Flags,TargetFrameName,PostData,Headers) (This)->lpVtbl->Navigate2(This,URL,Flags,TargetFrameName,PostData,Headers)
 #define IWebBrowser2_QueryStatusWB(This,cmdID,pcmdf) (This)->lpVtbl->QueryStatusWB(This,cmdID,pcmdf)
 #define IWebBrowser2_ExecWB(This,cmdID,cmdexecopt,pvaIn,pvaOut) (This)->lpVtbl->ExecWB(This,cmdID,cmdexecopt,pvaIn,pvaOut)
@@ -786,187 +2125,879 @@
 #define IWebBrowser2_put_AddressBar(This,Value) (This)->lpVtbl->put_AddressBar(This,Value)
 #define IWebBrowser2_get_Resizable(This,Value) (This)->lpVtbl->get_Resizable(This,Value)
 #define IWebBrowser2_put_Resizable(This,Value) (This)->lpVtbl->put_Resizable(This,Value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWebBrowser2_QueryInterface(IWebBrowser2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWebBrowser2_AddRef(IWebBrowser2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWebBrowser2_Release(IWebBrowser2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWebBrowser2_GetTypeInfoCount(IWebBrowser2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GetTypeInfo(IWebBrowser2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GetIDsOfNames(IWebBrowser2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWebBrowser2_Invoke(IWebBrowser2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWebBrowser methods ***/
+static FORCEINLINE HRESULT IWebBrowser2_GoBack(IWebBrowser2* This) {
+    return This->lpVtbl->GoBack(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GoForward(IWebBrowser2* This) {
+    return This->lpVtbl->GoForward(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GoHome(IWebBrowser2* This) {
+    return This->lpVtbl->GoHome(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GoSearch(IWebBrowser2* This) {
+    return This->lpVtbl->GoSearch(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_Navigate(IWebBrowser2* This,BSTR URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) {
+    return This->lpVtbl->Navigate(This,URL,Flags,TargetFrameName,PostData,Headers);
+}
+static FORCEINLINE HRESULT IWebBrowser2_Refresh(IWebBrowser2* This) {
+    return This->lpVtbl->Refresh(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_Refresh2(IWebBrowser2* This,VARIANT *Level) {
+    return This->lpVtbl->Refresh2(This,Level);
+}
+static FORCEINLINE HRESULT IWebBrowser2_Stop(IWebBrowser2* This) {
+    return This->lpVtbl->Stop(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Application(IWebBrowser2* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Application(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Parent(IWebBrowser2* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Parent(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Container(IWebBrowser2* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Container(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Document(IWebBrowser2* This,IDispatch **ppDisp) {
+    return This->lpVtbl->get_Document(This,ppDisp);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_TopLevelContainer(IWebBrowser2* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_TopLevelContainer(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Type(IWebBrowser2* This,BSTR *Type) {
+    return This->lpVtbl->get_Type(This,Type);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Left(IWebBrowser2* This,LONG *pl) {
+    return This->lpVtbl->get_Left(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Left(IWebBrowser2* This,LONG Left) {
+    return This->lpVtbl->put_Left(This,Left);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Top(IWebBrowser2* This,LONG *pl) {
+    return This->lpVtbl->get_Top(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Top(IWebBrowser2* This,LONG Top) {
+    return This->lpVtbl->put_Top(This,Top);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Width(IWebBrowser2* This,LONG *pl) {
+    return This->lpVtbl->get_Width(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Width(IWebBrowser2* This,LONG Width) {
+    return This->lpVtbl->put_Width(This,Width);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Height(IWebBrowser2* This,LONG *pl) {
+    return This->lpVtbl->get_Height(This,pl);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Height(IWebBrowser2* This,LONG Height) {
+    return This->lpVtbl->put_Height(This,Height);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_LocationName(IWebBrowser2* This,BSTR *LocationName) {
+    return This->lpVtbl->get_LocationName(This,LocationName);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_LocationURL(IWebBrowser2* This,BSTR *LocationURL) {
+    return This->lpVtbl->get_LocationURL(This,LocationURL);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Busy(IWebBrowser2* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_Busy(This,pBool);
+}
+/*** IWebBrowserApp methods ***/
+static FORCEINLINE HRESULT IWebBrowser2_Quit(IWebBrowser2* This) {
+    return This->lpVtbl->Quit(This);
+}
+static FORCEINLINE HRESULT IWebBrowser2_ClientToWindow(IWebBrowser2* This,int *pcx,int *pcy) {
+    return This->lpVtbl->ClientToWindow(This,pcx,pcy);
+}
+static FORCEINLINE HRESULT IWebBrowser2_PutProperty(IWebBrowser2* This,BSTR Property,VARIANT vtValue) {
+    return This->lpVtbl->PutProperty(This,Property,vtValue);
+}
+static FORCEINLINE HRESULT IWebBrowser2_GetProperty(IWebBrowser2* This,BSTR Property,VARIANT *pvtValue) {
+    return This->lpVtbl->GetProperty(This,Property,pvtValue);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Name(IWebBrowser2* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_HWND(IWebBrowser2* This,SHANDLE_PTR *pHWND) {
+    return This->lpVtbl->get_HWND(This,pHWND);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_FullName(IWebBrowser2* This,BSTR *FullName) {
+    return This->lpVtbl->get_FullName(This,FullName);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Path(IWebBrowser2* This,BSTR *Path) {
+    return This->lpVtbl->get_Path(This,Path);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Visible(IWebBrowser2* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_Visible(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Visible(IWebBrowser2* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_Visible(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_StatusBar(IWebBrowser2* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_StatusBar(This,pBool);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_StatusBar(IWebBrowser2* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_StatusBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_StatusText(IWebBrowser2* This,BSTR *StatusText) {
+    return This->lpVtbl->get_StatusText(This,StatusText);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_StatusText(IWebBrowser2* This,BSTR StatusText) {
+    return This->lpVtbl->put_StatusText(This,StatusText);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_ToolBar(IWebBrowser2* This,int *Value) {
+    return This->lpVtbl->get_ToolBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_ToolBar(IWebBrowser2* This,int Value) {
+    return This->lpVtbl->put_ToolBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_MenuBar(IWebBrowser2* This,VARIANT_BOOL *Value) {
+    return This->lpVtbl->get_MenuBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_MenuBar(IWebBrowser2* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_MenuBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_FullScreen(IWebBrowser2* This,VARIANT_BOOL *pbFullScreen) {
+    return This->lpVtbl->get_FullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_FullScreen(IWebBrowser2* This,VARIANT_BOOL bFullScreen) {
+    return This->lpVtbl->put_FullScreen(This,bFullScreen);
+}
+/*** IWebBrowser2 methods ***/
+static FORCEINLINE HRESULT IWebBrowser2_Navigate2(IWebBrowser2* This,VARIANT *URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers) {
+    return This->lpVtbl->Navigate2(This,URL,Flags,TargetFrameName,PostData,Headers);
+}
+static FORCEINLINE HRESULT IWebBrowser2_QueryStatusWB(IWebBrowser2* This,OLECMDID cmdID,OLECMDF *pcmdf) {
+    return This->lpVtbl->QueryStatusWB(This,cmdID,pcmdf);
+}
+static FORCEINLINE HRESULT IWebBrowser2_ExecWB(IWebBrowser2* This,OLECMDID cmdID,OLECMDEXECOPT cmdexecopt,VARIANT *pvaIn,VARIANT *pvaOut) {
+    return This->lpVtbl->ExecWB(This,cmdID,cmdexecopt,pvaIn,pvaOut);
+}
+static FORCEINLINE HRESULT IWebBrowser2_ShowBrowserBar(IWebBrowser2* This,VARIANT *pvaClsid,VARIANT *pvarShow,VARIANT *pvarSize) {
+    return This->lpVtbl->ShowBrowserBar(This,pvaClsid,pvarShow,pvarSize);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_ReadyState(IWebBrowser2* This,READYSTATE *plReadyState) {
+    return This->lpVtbl->get_ReadyState(This,plReadyState);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Offline(IWebBrowser2* This,VARIANT_BOOL *pbOffline) {
+    return This->lpVtbl->get_Offline(This,pbOffline);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Offline(IWebBrowser2* This,VARIANT_BOOL bOffline) {
+    return This->lpVtbl->put_Offline(This,bOffline);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Silent(IWebBrowser2* This,VARIANT_BOOL *pbSilent) {
+    return This->lpVtbl->get_Silent(This,pbSilent);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Silent(IWebBrowser2* This,VARIANT_BOOL bSilent) {
+    return This->lpVtbl->put_Silent(This,bSilent);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_RegisterAsBrowser(IWebBrowser2* This,VARIANT_BOOL *pbRegister) {
+    return This->lpVtbl->get_RegisterAsBrowser(This,pbRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_RegisterAsBrowser(IWebBrowser2* This,VARIANT_BOOL bRegister) {
+    return This->lpVtbl->put_RegisterAsBrowser(This,bRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_RegisterAsDropTarget(IWebBrowser2* This,VARIANT_BOOL *pbRegister) {
+    return This->lpVtbl->get_RegisterAsDropTarget(This,pbRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_RegisterAsDropTarget(IWebBrowser2* This,VARIANT_BOOL bRegister) {
+    return This->lpVtbl->put_RegisterAsDropTarget(This,bRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_TheaterMode(IWebBrowser2* This,VARIANT_BOOL *pbRegister) {
+    return This->lpVtbl->get_TheaterMode(This,pbRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_TheaterMode(IWebBrowser2* This,VARIANT_BOOL bRegister) {
+    return This->lpVtbl->put_TheaterMode(This,bRegister);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_AddressBar(IWebBrowser2* This,VARIANT_BOOL *Value) {
+    return This->lpVtbl->get_AddressBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_AddressBar(IWebBrowser2* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_AddressBar(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_get_Resizable(IWebBrowser2* This,VARIANT_BOOL *Value) {
+    return This->lpVtbl->get_Resizable(This,Value);
+}
+static FORCEINLINE HRESULT IWebBrowser2_put_Resizable(IWebBrowser2* This,VARIANT_BOOL Value) {
+    return This->lpVtbl->put_Resizable(This,Value);
+}
 #endif
 #endif
-  HRESULT WINAPI IWebBrowser2_Navigate2_Proxy(IWebBrowser2 *This,VARIANT *URL,VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers);
-  void __RPC_STUB IWebBrowser2_Navigate2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_QueryStatusWB_Proxy(IWebBrowser2 *This,OLECMDID cmdID,OLECMDF *pcmdf);
-  void __RPC_STUB IWebBrowser2_QueryStatusWB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_ExecWB_Proxy(IWebBrowser2 *This,OLECMDID cmdID,OLECMDEXECOPT cmdexecopt,VARIANT *pvaIn,VARIANT *pvaOut);
-  void __RPC_STUB IWebBrowser2_ExecWB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_ShowBrowserBar_Proxy(IWebBrowser2 *This,VARIANT *pvaClsid,VARIANT *pvarShow,VARIANT *pvarSize);
-  void __RPC_STUB IWebBrowser2_ShowBrowserBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_ReadyState_Proxy(IWebBrowser2 *This,READYSTATE *plReadyState);
-  void __RPC_STUB IWebBrowser2_get_ReadyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_Offline_Proxy(IWebBrowser2 *This,VARIANT_BOOL *pbOffline);
-  void __RPC_STUB IWebBrowser2_get_Offline_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_Offline_Proxy(IWebBrowser2 *This,VARIANT_BOOL bOffline);
-  void __RPC_STUB IWebBrowser2_put_Offline_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_Silent_Proxy(IWebBrowser2 *This,VARIANT_BOOL *pbSilent);
-  void __RPC_STUB IWebBrowser2_get_Silent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_Silent_Proxy(IWebBrowser2 *This,VARIANT_BOOL bSilent);
-  void __RPC_STUB IWebBrowser2_put_Silent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_RegisterAsBrowser_Proxy(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-  void __RPC_STUB IWebBrowser2_get_RegisterAsBrowser_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_RegisterAsBrowser_Proxy(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-  void __RPC_STUB IWebBrowser2_put_RegisterAsBrowser_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_RegisterAsDropTarget_Proxy(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-  void __RPC_STUB IWebBrowser2_get_RegisterAsDropTarget_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_RegisterAsDropTarget_Proxy(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-  void __RPC_STUB IWebBrowser2_put_RegisterAsDropTarget_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_TheaterMode_Proxy(IWebBrowser2 *This,VARIANT_BOOL *pbRegister);
-  void __RPC_STUB IWebBrowser2_get_TheaterMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_TheaterMode_Proxy(IWebBrowser2 *This,VARIANT_BOOL bRegister);
-  void __RPC_STUB IWebBrowser2_put_TheaterMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_AddressBar_Proxy(IWebBrowser2 *This,VARIANT_BOOL *Value);
-  void __RPC_STUB IWebBrowser2_get_AddressBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_AddressBar_Proxy(IWebBrowser2 *This,VARIANT_BOOL Value);
-  void __RPC_STUB IWebBrowser2_put_AddressBar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_get_Resizable_Proxy(IWebBrowser2 *This,VARIANT_BOOL *Value);
-  void __RPC_STUB IWebBrowser2_get_Resizable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IWebBrowser2_put_Resizable_Proxy(IWebBrowser2 *This,VARIANT_BOOL Value);
-  void __RPC_STUB IWebBrowser2_put_Resizable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE IWebBrowser2_Navigate2_Proxy(
+    IWebBrowser2* This,
+    VARIANT *URL,
+    VARIANT *Flags,
+    VARIANT *TargetFrameName,
+    VARIANT *PostData,
+    VARIANT *Headers);
+void __RPC_STUB IWebBrowser2_Navigate2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_QueryStatusWB_Proxy(
+    IWebBrowser2* This,
+    OLECMDID cmdID,
+    OLECMDF *pcmdf);
+void __RPC_STUB IWebBrowser2_QueryStatusWB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_ExecWB_Proxy(
+    IWebBrowser2* This,
+    OLECMDID cmdID,
+    OLECMDEXECOPT cmdexecopt,
+    VARIANT *pvaIn,
+    VARIANT *pvaOut);
+void __RPC_STUB IWebBrowser2_ExecWB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_ShowBrowserBar_Proxy(
+    IWebBrowser2* This,
+    VARIANT *pvaClsid,
+    VARIANT *pvarShow,
+    VARIANT *pvarSize);
+void __RPC_STUB IWebBrowser2_ShowBrowserBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_ReadyState_Proxy(
+    IWebBrowser2* This,
+    READYSTATE *plReadyState);
+void __RPC_STUB IWebBrowser2_get_ReadyState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_Offline_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *pbOffline);
+void __RPC_STUB IWebBrowser2_get_Offline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_Offline_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL bOffline);
+void __RPC_STUB IWebBrowser2_put_Offline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_Silent_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *pbSilent);
+void __RPC_STUB IWebBrowser2_get_Silent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_Silent_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL bSilent);
+void __RPC_STUB IWebBrowser2_put_Silent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_RegisterAsBrowser_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *pbRegister);
+void __RPC_STUB IWebBrowser2_get_RegisterAsBrowser_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_RegisterAsBrowser_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL bRegister);
+void __RPC_STUB IWebBrowser2_put_RegisterAsBrowser_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_RegisterAsDropTarget_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *pbRegister);
+void __RPC_STUB IWebBrowser2_get_RegisterAsDropTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_RegisterAsDropTarget_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL bRegister);
+void __RPC_STUB IWebBrowser2_put_RegisterAsDropTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_TheaterMode_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *pbRegister);
+void __RPC_STUB IWebBrowser2_get_TheaterMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_TheaterMode_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL bRegister);
+void __RPC_STUB IWebBrowser2_put_TheaterMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_AddressBar_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *Value);
+void __RPC_STUB IWebBrowser2_get_AddressBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_AddressBar_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowser2_put_AddressBar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_get_Resizable_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL *Value);
+void __RPC_STUB IWebBrowser2_get_Resizable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWebBrowser2_put_Resizable_Proxy(
+    IWebBrowser2* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowser2_put_Resizable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWebBrowser2_INTERFACE_DEFINED__ */
+
+typedef enum SecureLockIconConstants {
+    secureLockIconUnsecure = 0,
+    secureLockIconMixed = 1,
+    secureLockIconSecureUnknownBits = 2,
+    secureLockIconSecure40Bit = 3,
+    secureLockIconSecure56Bit = 4,
+    secureLockIconSecureFortezza = 5,
+    secureLockIconSecure128Bit = 6
+} SecureLockIconConstants;
+/*****************************************************************************
+ * DWebBrowserEvents2 dispinterface
+ */
 #ifndef __DWebBrowserEvents2_DISPINTERFACE_DEFINED__
 #define __DWebBrowserEvents2_DISPINTERFACE_DEFINED__
-  EXTERN_C const IID DIID_DWebBrowserEvents2;
+
+DEFINE_GUID(DIID_DWebBrowserEvents2, 0x34a715a0, 0x6587, 0x11d0, 0x92,0x4a, 0x00,0x20,0xaf,0xc7,0xac,0x4d);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct DWebBrowserEvents2 : public IDispatch {
-  };
+MIDL_INTERFACE("34a715a0-6587-11d0-924a-0020afc7ac4d")
+DWebBrowserEvents2 : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DWebBrowserEvents2, 0x34a715a0, 0x6587, 0x11d0, 0x92,0x4a, 0x00,0x20,0xaf,0xc7,0xac,0x4d)
+#endif
 #else
-  typedef struct DWebBrowserEvents2Vtbl {
+typedef struct DWebBrowserEvents2Vtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(DWebBrowserEvents2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(DWebBrowserEvents2 *This);
-      ULONG (WINAPI *Release)(DWebBrowserEvents2 *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(DWebBrowserEvents2 *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(DWebBrowserEvents2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(DWebBrowserEvents2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(DWebBrowserEvents2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        DWebBrowserEvents2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        DWebBrowserEvents2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        DWebBrowserEvents2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        DWebBrowserEvents2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        DWebBrowserEvents2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        DWebBrowserEvents2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        DWebBrowserEvents2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
     END_INTERFACE
-  } DWebBrowserEvents2Vtbl;
-  struct DWebBrowserEvents2 {
-    CONST_VTBL struct DWebBrowserEvents2Vtbl *lpVtbl;
-  };
+} DWebBrowserEvents2Vtbl;
+interface DWebBrowserEvents2 {
+    CONST_VTBL DWebBrowserEvents2Vtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define DWebBrowserEvents2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define DWebBrowserEvents2_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define DWebBrowserEvents2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define DWebBrowserEvents2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define DWebBrowserEvents2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define DWebBrowserEvents2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define DWebBrowserEvents2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#endif
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT DWebBrowserEvents2_QueryInterface(DWebBrowserEvents2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG DWebBrowserEvents2_AddRef(DWebBrowserEvents2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG DWebBrowserEvents2_Release(DWebBrowserEvents2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT DWebBrowserEvents2_GetTypeInfoCount(DWebBrowserEvents2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents2_GetTypeInfo(DWebBrowserEvents2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents2_GetIDsOfNames(DWebBrowserEvents2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT DWebBrowserEvents2_Invoke(DWebBrowserEvents2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
 #endif
 #endif
 
-  EXTERN_C const CLSID CLSID_WebBrowser_V1;
-#ifdef __cplusplus
-  class WebBrowser_V1;
-#endif
-  EXTERN_C const CLSID CLSID_WebBrowser;
-#ifdef __cplusplus
-  class WebBrowser;
-#endif
-  EXTERN_C const CLSID CLSID_InternetExplorer;
-#ifdef __cplusplus
-  class InternetExplorer;
-#endif
-  EXTERN_C const CLSID CLSID_ShellBrowserWindow;
-#ifdef __cplusplus
-  class ShellBrowserWindow;
 #endif
 
+#endif  /* __DWebBrowserEvents2_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * WebBrowser_V1 coclass
+ */
+
+DEFINE_GUID(CLSID_WebBrowser_V1, 0xeab22ac3, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("eab22ac3-30c1-11cf-a7eb-0000c05bae0b") WebBrowser_V1;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(WebBrowser_V1, 0xeab22ac3, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b)
+#endif
+#endif
+
+/*****************************************************************************
+ * WebBrowser coclass
+ */
+
+DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9,0x6b, 0x00,0xc0,0x4f,0xd7,0x05,0xa2);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8856f961-340a-11d0-a96b-00c04fd705a2") WebBrowser;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9,0x6b, 0x00,0xc0,0x4f,0xd7,0x05,0xa2)
+#endif
+#endif
+
+/*****************************************************************************
+ * InternetExplorer coclass
+ */
+
+DEFINE_GUID(CLSID_InternetExplorer, 0x0002df01, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0002df01-0000-0000-c000-000000000046") InternetExplorer;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(InternetExplorer, 0x0002df01, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
+#endif
+#endif
+
+/*****************************************************************************
+ * ShellBrowserWindow coclass
+ */
+
+DEFINE_GUID(CLSID_ShellBrowserWindow, 0xc08afd90, 0xf2a1, 0x11d1, 0x84,0x55, 0x00,0xa0,0xc9,0x1f,0x38,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("c08afd90-f2a1-11d1-8455-00a0c91f3880") ShellBrowserWindow;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellBrowserWindow, 0xc08afd90, 0xf2a1, 0x11d1, 0x84,0x55, 0x00,0xa0,0xc9,0x1f,0x38,0x80)
+#endif
+#endif
+
+typedef enum ShellWindowTypeConstants {
+    SWC_EXPLORER = 0,
+    SWC_BROWSER = 1,
+    SWC_3RDPARTY = 2,
+    SWC_CALLBACK = 4,
+    SWC_DESKTOP = 8
+} ShellWindowTypeConstants;
+typedef enum ShellWindowFindWindowOptions {
+    SWFO_NEEDDISPATCH = 1,
+    SWFO_INCLUDEPENDING = 2,
+    SWFO_COOKIEPASSED = 4
+} ShellWindowFindWindowOptions;
+/*****************************************************************************
+ * DShellWindowsEvents dispinterface
+ */
 #ifndef __DShellWindowsEvents_DISPINTERFACE_DEFINED__
 #define __DShellWindowsEvents_DISPINTERFACE_DEFINED__
-  EXTERN_C const IID DIID_DShellWindowsEvents;
+
+DEFINE_GUID(DIID_DShellWindowsEvents, 0xfe4106e0, 0x399a, 0x11d0, 0xa4,0x8c, 0x00,0xa0,0xc9,0x0a,0x8f,0x39);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct DShellWindowsEvents : public IDispatch {
-  };
+MIDL_INTERFACE("fe4106e0-399a-11d0-a48c-00a0c90a8f39")
+DShellWindowsEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DShellWindowsEvents, 0xfe4106e0, 0x399a, 0x11d0, 0xa4,0x8c, 0x00,0xa0,0xc9,0x0a,0x8f,0x39)
+#endif
 #else
-  typedef struct DShellWindowsEventsVtbl {
+typedef struct DShellWindowsEventsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(DShellWindowsEvents *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(DShellWindowsEvents *This);
-      ULONG (WINAPI *Release)(DShellWindowsEvents *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(DShellWindowsEvents *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(DShellWindowsEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(DShellWindowsEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(DShellWindowsEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        DShellWindowsEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        DShellWindowsEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        DShellWindowsEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        DShellWindowsEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        DShellWindowsEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        DShellWindowsEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        DShellWindowsEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
     END_INTERFACE
-  } DShellWindowsEventsVtbl;
-  struct DShellWindowsEvents {
-    CONST_VTBL struct DShellWindowsEventsVtbl *lpVtbl;
-  };
+} DShellWindowsEventsVtbl;
+interface DShellWindowsEvents {
+    CONST_VTBL DShellWindowsEventsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define DShellWindowsEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define DShellWindowsEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define DShellWindowsEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define DShellWindowsEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define DShellWindowsEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define DShellWindowsEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define DShellWindowsEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#endif
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT DShellWindowsEvents_QueryInterface(DShellWindowsEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG DShellWindowsEvents_AddRef(DShellWindowsEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG DShellWindowsEvents_Release(DShellWindowsEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT DShellWindowsEvents_GetTypeInfoCount(DShellWindowsEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT DShellWindowsEvents_GetTypeInfo(DShellWindowsEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT DShellWindowsEvents_GetIDsOfNames(DShellWindowsEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT DShellWindowsEvents_Invoke(DShellWindowsEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
 #endif
 #endif
 
+#endif
+
+#endif  /* __DShellWindowsEvents_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IShellWindows interface
+ */
 #ifndef __IShellWindows_INTERFACE_DEFINED__
 #define __IShellWindows_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IShellWindows;
+
+DEFINE_GUID(IID_IShellWindows, 0x85cb6900, 0x4d95, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IShellWindows : public IDispatch {
-  public:
-    virtual HRESULT WINAPI get_Count(__LONG32 *Count) = 0;
-    virtual HRESULT WINAPI Item(VARIANT index,IDispatch **Folder) = 0;
-    virtual HRESULT WINAPI _NewEnum(IUnknown **ppunk) = 0;
-    virtual HRESULT WINAPI Register(IDispatch *pid,__LONG32 hwnd,int swClass,__LONG32 *plCookie) = 0;
-    virtual HRESULT WINAPI RegisterPending(__LONG32 lThreadId,VARIANT *pvarloc,VARIANT *pvarlocRoot,int swClass,__LONG32 *plCookie) = 0;
-    virtual HRESULT WINAPI Revoke(__LONG32 lCookie) = 0;
-    virtual HRESULT WINAPI OnNavigate(__LONG32 lCookie,VARIANT *pvarLoc) = 0;
-    virtual HRESULT WINAPI OnActivated(__LONG32 lCookie,VARIANT_BOOL fActive) = 0;
-    virtual HRESULT WINAPI FindWindowSW(VARIANT *pvarLoc,VARIANT *pvarLocRoot,int swClass,__LONG32 *phwnd,int swfwOptions,IDispatch **ppdispOut) = 0;
-    virtual HRESULT WINAPI OnCreated(__LONG32 lCookie,IUnknown *punk) = 0;
-    virtual HRESULT WINAPI ProcessAttachDetach(VARIANT_BOOL fAttach) = 0;
-  };
+MIDL_INTERFACE("85cb6900-4d95-11cf-960c-0080c7f4ee85")
+IShellWindows : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT index,
+        IDispatch **Folder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE _NewEnum(
+        IUnknown **ppunk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Register(
+        IDispatch *pid,
+        LONG hWnd,
+        int swClass,
+        LONG *plCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterPending(
+        LONG lThreadId,
+        VARIANT *pvarloc,
+        VARIANT *pvarlocRoot,
+        int swClass,
+        LONG *plCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Revoke(
+        LONG lCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnNavigate(
+        LONG lCookie,
+        VARIANT *pvarLoc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnActivated(
+        LONG lCookie,
+        VARIANT_BOOL fActive) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindWindowSW(
+        VARIANT *pvarLoc,
+        VARIANT *pvarLocRoot,
+        int swClass,
+        LONG *phwnd,
+        int swfwOptions,
+        IDispatch **ppdispOut) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnCreated(
+        LONG lCookie,
+        IUnknown *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessAttachDetach(
+        VARIANT_BOOL fAttach) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellWindows, 0x85cb6900, 0x4d95, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85)
+#endif
 #else
-  typedef struct IShellWindowsVtbl {
+typedef struct IShellWindowsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IShellWindows *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IShellWindows *This);
-      ULONG (WINAPI *Release)(IShellWindows *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IShellWindows *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IShellWindows *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IShellWindows *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IShellWindows *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *get_Count)(IShellWindows *This,__LONG32 *Count);
-      HRESULT (WINAPI *Item)(IShellWindows *This,VARIANT index,IDispatch **Folder);
-      HRESULT (WINAPI *_NewEnum)(IShellWindows *This,IUnknown **ppunk);
-      HRESULT (WINAPI *Register)(IShellWindows *This,IDispatch *pid,__LONG32 hwnd,int swClass,__LONG32 *plCookie);
-      HRESULT (WINAPI *RegisterPending)(IShellWindows *This,__LONG32 lThreadId,VARIANT *pvarloc,VARIANT *pvarlocRoot,int swClass,__LONG32 *plCookie);
-      HRESULT (WINAPI *Revoke)(IShellWindows *This,__LONG32 lCookie);
-      HRESULT (WINAPI *OnNavigate)(IShellWindows *This,__LONG32 lCookie,VARIANT *pvarLoc);
-      HRESULT (WINAPI *OnActivated)(IShellWindows *This,__LONG32 lCookie,VARIANT_BOOL fActive);
-      HRESULT (WINAPI *FindWindowSW)(IShellWindows *This,VARIANT *pvarLoc,VARIANT *pvarLocRoot,int swClass,__LONG32 *phwnd,int swfwOptions,IDispatch **ppdispOut);
-      HRESULT (WINAPI *OnCreated)(IShellWindows *This,__LONG32 lCookie,IUnknown *punk);
-      HRESULT (WINAPI *ProcessAttachDetach)(IShellWindows *This,VARIANT_BOOL fAttach);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellWindows* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellWindows* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellWindows* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IShellWindows* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IShellWindows* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IShellWindows* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IShellWindows* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IShellWindows methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IShellWindows* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IShellWindows* This,
+        VARIANT index,
+        IDispatch **Folder);
+
+    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
+        IShellWindows* This,
+        IUnknown **ppunk);
+
+    HRESULT (STDMETHODCALLTYPE *Register)(
+        IShellWindows* This,
+        IDispatch *pid,
+        LONG hWnd,
+        int swClass,
+        LONG *plCookie);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterPending)(
+        IShellWindows* This,
+        LONG lThreadId,
+        VARIANT *pvarloc,
+        VARIANT *pvarlocRoot,
+        int swClass,
+        LONG *plCookie);
+
+    HRESULT (STDMETHODCALLTYPE *Revoke)(
+        IShellWindows* This,
+        LONG lCookie);
+
+    HRESULT (STDMETHODCALLTYPE *OnNavigate)(
+        IShellWindows* This,
+        LONG lCookie,
+        VARIANT *pvarLoc);
+
+    HRESULT (STDMETHODCALLTYPE *OnActivated)(
+        IShellWindows* This,
+        LONG lCookie,
+        VARIANT_BOOL fActive);
+
+    HRESULT (STDMETHODCALLTYPE *FindWindowSW)(
+        IShellWindows* This,
+        VARIANT *pvarLoc,
+        VARIANT *pvarLocRoot,
+        int swClass,
+        LONG *phwnd,
+        int swfwOptions,
+        IDispatch **ppdispOut);
+
+    HRESULT (STDMETHODCALLTYPE *OnCreated)(
+        IShellWindows* This,
+        LONG lCookie,
+        IUnknown *punk);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessAttachDetach)(
+        IShellWindows* This,
+        VARIANT_BOOL fAttach);
+
     END_INTERFACE
-  } IShellWindowsVtbl;
-  struct IShellWindows {
-    CONST_VTBL struct IShellWindowsVtbl *lpVtbl;
-  };
+} IShellWindowsVtbl;
+interface IShellWindows {
+    CONST_VTBL IShellWindowsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IShellWindows_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IShellWindows_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IShellWindows_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IShellWindows_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IShellWindows_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IShellWindows_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IShellWindows_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IShellWindows methods ***/
 #define IShellWindows_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
 #define IShellWindows_Item(This,index,Folder) (This)->lpVtbl->Item(This,index,Folder)
 #define IShellWindows__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
-#define IShellWindows_Register(This,pid,hwnd,swClass,plCookie) (This)->lpVtbl->Register(This,pid,hwnd,swClass,plCookie)
+#define IShellWindows_Register(This,pid,hWnd,swClass,plCookie) (This)->lpVtbl->Register(This,pid,hWnd,swClass,plCookie)
 #define IShellWindows_RegisterPending(This,lThreadId,pvarloc,pvarlocRoot,swClass,plCookie) (This)->lpVtbl->RegisterPending(This,lThreadId,pvarloc,pvarlocRoot,swClass,plCookie)
 #define IShellWindows_Revoke(This,lCookie) (This)->lpVtbl->Revoke(This,lCookie)
 #define IShellWindows_OnNavigate(This,lCookie,pvarLoc) (This)->lpVtbl->OnNavigate(This,lCookie,pvarLoc)
@@ -974,93 +3005,385 @@
 #define IShellWindows_FindWindowSW(This,pvarLoc,pvarLocRoot,swClass,phwnd,swfwOptions,ppdispOut) (This)->lpVtbl->FindWindowSW(This,pvarLoc,pvarLocRoot,swClass,phwnd,swfwOptions,ppdispOut)
 #define IShellWindows_OnCreated(This,lCookie,punk) (This)->lpVtbl->OnCreated(This,lCookie,punk)
 #define IShellWindows_ProcessAttachDetach(This,fAttach) (This)->lpVtbl->ProcessAttachDetach(This,fAttach)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellWindows_QueryInterface(IShellWindows* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellWindows_AddRef(IShellWindows* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellWindows_Release(IShellWindows* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IShellWindows_GetTypeInfoCount(IShellWindows* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IShellWindows_GetTypeInfo(IShellWindows* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IShellWindows_GetIDsOfNames(IShellWindows* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IShellWindows_Invoke(IShellWindows* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IShellWindows methods ***/
+static FORCEINLINE HRESULT IShellWindows_get_Count(IShellWindows* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IShellWindows_Item(IShellWindows* This,VARIANT index,IDispatch **Folder) {
+    return This->lpVtbl->Item(This,index,Folder);
+}
+static FORCEINLINE HRESULT IShellWindows__NewEnum(IShellWindows* This,IUnknown **ppunk) {
+    return This->lpVtbl->_NewEnum(This,ppunk);
+}
+static FORCEINLINE HRESULT IShellWindows_Register(IShellWindows* This,IDispatch *pid,LONG hWnd,int swClass,LONG *plCookie) {
+    return This->lpVtbl->Register(This,pid,hWnd,swClass,plCookie);
+}
+static FORCEINLINE HRESULT IShellWindows_RegisterPending(IShellWindows* This,LONG lThreadId,VARIANT *pvarloc,VARIANT *pvarlocRoot,int swClass,LONG *plCookie) {
+    return This->lpVtbl->RegisterPending(This,lThreadId,pvarloc,pvarlocRoot,swClass,plCookie);
+}
+static FORCEINLINE HRESULT IShellWindows_Revoke(IShellWindows* This,LONG lCookie) {
+    return This->lpVtbl->Revoke(This,lCookie);
+}
+static FORCEINLINE HRESULT IShellWindows_OnNavigate(IShellWindows* This,LONG lCookie,VARIANT *pvarLoc) {
+    return This->lpVtbl->OnNavigate(This,lCookie,pvarLoc);
+}
+static FORCEINLINE HRESULT IShellWindows_OnActivated(IShellWindows* This,LONG lCookie,VARIANT_BOOL fActive) {
+    return This->lpVtbl->OnActivated(This,lCookie,fActive);
+}
+static FORCEINLINE HRESULT IShellWindows_FindWindowSW(IShellWindows* This,VARIANT *pvarLoc,VARIANT *pvarLocRoot,int swClass,LONG *phwnd,int swfwOptions,IDispatch **ppdispOut) {
+    return This->lpVtbl->FindWindowSW(This,pvarLoc,pvarLocRoot,swClass,phwnd,swfwOptions,ppdispOut);
+}
+static FORCEINLINE HRESULT IShellWindows_OnCreated(IShellWindows* This,LONG lCookie,IUnknown *punk) {
+    return This->lpVtbl->OnCreated(This,lCookie,punk);
+}
+static FORCEINLINE HRESULT IShellWindows_ProcessAttachDetach(IShellWindows* This,VARIANT_BOOL fAttach) {
+    return This->lpVtbl->ProcessAttachDetach(This,fAttach);
+}
 #endif
 #endif
-  HRESULT WINAPI IShellWindows_get_Count_Proxy(IShellWindows *This,__LONG32 *Count);
-  void __RPC_STUB IShellWindows_get_Count_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_Item_Proxy(IShellWindows *This,VARIANT index,IDispatch **Folder);
-  void __RPC_STUB IShellWindows_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows__NewEnum_Proxy(IShellWindows *This,IUnknown **ppunk);
-  void __RPC_STUB IShellWindows__NewEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_Register_Proxy(IShellWindows *This,IDispatch *pid,__LONG32 hwnd,int swClass,__LONG32 *plCookie);
-  void __RPC_STUB IShellWindows_Register_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_RegisterPending_Proxy(IShellWindows *This,__LONG32 lThreadId,VARIANT *pvarloc,VARIANT *pvarlocRoot,int swClass,__LONG32 *plCookie);
-  void __RPC_STUB IShellWindows_RegisterPending_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_Revoke_Proxy(IShellWindows *This,__LONG32 lCookie);
-  void __RPC_STUB IShellWindows_Revoke_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_OnNavigate_Proxy(IShellWindows *This,__LONG32 lCookie,VARIANT *pvarLoc);
-  void __RPC_STUB IShellWindows_OnNavigate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_OnActivated_Proxy(IShellWindows *This,__LONG32 lCookie,VARIANT_BOOL fActive);
-  void __RPC_STUB IShellWindows_OnActivated_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_FindWindowSW_Proxy(IShellWindows *This,VARIANT *pvarLoc,VARIANT *pvarLocRoot,int swClass,__LONG32 *phwnd,int swfwOptions,IDispatch **ppdispOut);
-  void __RPC_STUB IShellWindows_FindWindowSW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_OnCreated_Proxy(IShellWindows *This,__LONG32 lCookie,IUnknown *punk);
-  void __RPC_STUB IShellWindows_OnCreated_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellWindows_ProcessAttachDetach_Proxy(IShellWindows *This,VARIANT_BOOL fAttach);
-  void __RPC_STUB IShellWindows_ProcessAttachDetach_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
-  EXTERN_C const CLSID CLSID_ShellWindows;
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellWindows_get_Count_Proxy(
+    IShellWindows* This,
+    LONG *Count);
+void __RPC_STUB IShellWindows_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_Item_Proxy(
+    IShellWindows* This,
+    VARIANT index,
+    IDispatch **Folder);
+void __RPC_STUB IShellWindows_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows__NewEnum_Proxy(
+    IShellWindows* This,
+    IUnknown **ppunk);
+void __RPC_STUB IShellWindows__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_Register_Proxy(
+    IShellWindows* This,
+    IDispatch *pid,
+    LONG hWnd,
+    int swClass,
+    LONG *plCookie);
+void __RPC_STUB IShellWindows_Register_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_RegisterPending_Proxy(
+    IShellWindows* This,
+    LONG lThreadId,
+    VARIANT *pvarloc,
+    VARIANT *pvarlocRoot,
+    int swClass,
+    LONG *plCookie);
+void __RPC_STUB IShellWindows_RegisterPending_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_Revoke_Proxy(
+    IShellWindows* This,
+    LONG lCookie);
+void __RPC_STUB IShellWindows_Revoke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_OnNavigate_Proxy(
+    IShellWindows* This,
+    LONG lCookie,
+    VARIANT *pvarLoc);
+void __RPC_STUB IShellWindows_OnNavigate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_OnActivated_Proxy(
+    IShellWindows* This,
+    LONG lCookie,
+    VARIANT_BOOL fActive);
+void __RPC_STUB IShellWindows_OnActivated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_FindWindowSW_Proxy(
+    IShellWindows* This,
+    VARIANT *pvarLoc,
+    VARIANT *pvarLocRoot,
+    int swClass,
+    LONG *phwnd,
+    int swfwOptions,
+    IDispatch **ppdispOut);
+void __RPC_STUB IShellWindows_FindWindowSW_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_OnCreated_Proxy(
+    IShellWindows* This,
+    LONG lCookie,
+    IUnknown *punk);
+void __RPC_STUB IShellWindows_OnCreated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellWindows_ProcessAttachDetach_Proxy(
+    IShellWindows* This,
+    VARIANT_BOOL fAttach);
+void __RPC_STUB IShellWindows_ProcessAttachDetach_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellWindows_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ShellWindows coclass
+ */
+
+DEFINE_GUID(CLSID_ShellWindows, 0x9ba05972, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39);
+
 #ifdef __cplusplus
-  class ShellWindows;
+class DECLSPEC_UUID("9ba05972-f6a8-11cf-a442-00a0c90a8f39") ShellWindows;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellWindows, 0x9ba05972, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39)
+#endif
 #endif
 
+/*****************************************************************************
+ * IShellUIHelper interface
+ */
 #ifndef __IShellUIHelper_INTERFACE_DEFINED__
 #define __IShellUIHelper_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IShellUIHelper;
+
+DEFINE_GUID(IID_IShellUIHelper, 0x729fe2f8, 0x1ea8, 0x11d1, 0x8f,0x85, 0x00,0xc0,0x4f,0xc2,0xfb,0xe1);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IShellUIHelper : public IDispatch {
-  public:
-    virtual HRESULT WINAPI ResetFirstBootMode(void) = 0;
-    virtual HRESULT WINAPI ResetSafeMode(void) = 0;
-    virtual HRESULT WINAPI RefreshOfflineDesktop(void) = 0;
-    virtual HRESULT WINAPI AddFavorite(BSTR URL,VARIANT *Title) = 0;
-    virtual HRESULT WINAPI AddChannel(BSTR URL) = 0;
-    virtual HRESULT WINAPI AddDesktopComponent(BSTR URL,BSTR Type,VARIANT *Left,VARIANT *Top,VARIANT *Width,VARIANT *Height) = 0;
-    virtual HRESULT WINAPI IsSubscribed(BSTR URL,VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI NavigateAndFind(BSTR URL,BSTR strQuery,VARIANT *varTargetFrame) = 0;
-    virtual HRESULT WINAPI ImportExportFavorites(VARIANT_BOOL fImport,BSTR strImpExpPath) = 0;
-    virtual HRESULT WINAPI AutoCompleteSaveForm(VARIANT *Form) = 0;
-    virtual HRESULT WINAPI AutoScan(BSTR strSearch,BSTR strFailureUrl,VARIANT *pvarTargetFrame) = 0;
-    virtual HRESULT WINAPI AutoCompleteAttach(VARIANT *Reserved) = 0;
-    virtual HRESULT WINAPI ShowBrowserUI(BSTR bstrName,VARIANT *pvarIn,VARIANT *pvarOut) = 0;
-  };
+MIDL_INTERFACE("729fe2f8-1ea8-11d1-8f85-00c04fc2fbe1")
+IShellUIHelper : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE ResetFirstBootMode(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResetSafeMode(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RefreshOfflineDesktop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddFavorite(
+        BSTR URL,
+        VARIANT *Title) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddChannel(
+        BSTR URL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDesktopComponent(
+        BSTR URL,
+        BSTR Type,
+        VARIANT *Left,
+        VARIANT *Top,
+        VARIANT *Width,
+        VARIANT *Height) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsSubscribed(
+        BSTR URL,
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NavigateAndFind(
+        BSTR URL,
+        BSTR strQuery,
+        VARIANT *varTargetFrame) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ImportExportFavorites(
+        VARIANT_BOOL fImport,
+        BSTR strImpExpPath) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AutoCompleteSaveForm(
+        VARIANT *Form) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AutoScan(
+        BSTR strSearch,
+        BSTR strFailureUrl,
+        VARIANT *pvarTargetFrame) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AutoCompleteAttach(
+        VARIANT *Reserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowBrowserUI(
+        BSTR bstrName,
+        VARIANT *pvarIn,
+        VARIANT *pvarOut) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellUIHelper, 0x729fe2f8, 0x1ea8, 0x11d1, 0x8f,0x85, 0x00,0xc0,0x4f,0xc2,0xfb,0xe1)
+#endif
 #else
-  typedef struct IShellUIHelperVtbl {
+typedef struct IShellUIHelperVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IShellUIHelper *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IShellUIHelper *This);
-      ULONG (WINAPI *Release)(IShellUIHelper *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IShellUIHelper *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IShellUIHelper *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IShellUIHelper *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IShellUIHelper *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *ResetFirstBootMode)(IShellUIHelper *This);
-      HRESULT (WINAPI *ResetSafeMode)(IShellUIHelper *This);
-      HRESULT (WINAPI *RefreshOfflineDesktop)(IShellUIHelper *This);
-      HRESULT (WINAPI *AddFavorite)(IShellUIHelper *This,BSTR URL,VARIANT *Title);
-      HRESULT (WINAPI *AddChannel)(IShellUIHelper *This,BSTR URL);
-      HRESULT (WINAPI *AddDesktopComponent)(IShellUIHelper *This,BSTR URL,BSTR Type,VARIANT *Left,VARIANT *Top,VARIANT *Width,VARIANT *Height);
-      HRESULT (WINAPI *IsSubscribed)(IShellUIHelper *This,BSTR URL,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *NavigateAndFind)(IShellUIHelper *This,BSTR URL,BSTR strQuery,VARIANT *varTargetFrame);
-      HRESULT (WINAPI *ImportExportFavorites)(IShellUIHelper *This,VARIANT_BOOL fImport,BSTR strImpExpPath);
-      HRESULT (WINAPI *AutoCompleteSaveForm)(IShellUIHelper *This,VARIANT *Form);
-      HRESULT (WINAPI *AutoScan)(IShellUIHelper *This,BSTR strSearch,BSTR strFailureUrl,VARIANT *pvarTargetFrame);
-      HRESULT (WINAPI *AutoCompleteAttach)(IShellUIHelper *This,VARIANT *Reserved);
-      HRESULT (WINAPI *ShowBrowserUI)(IShellUIHelper *This,BSTR bstrName,VARIANT *pvarIn,VARIANT *pvarOut);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellUIHelper* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellUIHelper* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellUIHelper* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IShellUIHelper* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IShellUIHelper* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IShellUIHelper* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IShellUIHelper* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IShellUIHelper methods ***/
+    HRESULT (STDMETHODCALLTYPE *ResetFirstBootMode)(
+        IShellUIHelper* This);
+
+    HRESULT (STDMETHODCALLTYPE *ResetSafeMode)(
+        IShellUIHelper* This);
+
+    HRESULT (STDMETHODCALLTYPE *RefreshOfflineDesktop)(
+        IShellUIHelper* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddFavorite)(
+        IShellUIHelper* This,
+        BSTR URL,
+        VARIANT *Title);
+
+    HRESULT (STDMETHODCALLTYPE *AddChannel)(
+        IShellUIHelper* This,
+        BSTR URL);
+
+    HRESULT (STDMETHODCALLTYPE *AddDesktopComponent)(
+        IShellUIHelper* This,
+        BSTR URL,
+        BSTR Type,
+        VARIANT *Left,
+        VARIANT *Top,
+        VARIANT *Width,
+        VARIANT *Height);
+
+    HRESULT (STDMETHODCALLTYPE *IsSubscribed)(
+        IShellUIHelper* This,
+        BSTR URL,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *NavigateAndFind)(
+        IShellUIHelper* This,
+        BSTR URL,
+        BSTR strQuery,
+        VARIANT *varTargetFrame);
+
+    HRESULT (STDMETHODCALLTYPE *ImportExportFavorites)(
+        IShellUIHelper* This,
+        VARIANT_BOOL fImport,
+        BSTR strImpExpPath);
+
+    HRESULT (STDMETHODCALLTYPE *AutoCompleteSaveForm)(
+        IShellUIHelper* This,
+        VARIANT *Form);
+
+    HRESULT (STDMETHODCALLTYPE *AutoScan)(
+        IShellUIHelper* This,
+        BSTR strSearch,
+        BSTR strFailureUrl,
+        VARIANT *pvarTargetFrame);
+
+    HRESULT (STDMETHODCALLTYPE *AutoCompleteAttach)(
+        IShellUIHelper* This,
+        VARIANT *Reserved);
+
+    HRESULT (STDMETHODCALLTYPE *ShowBrowserUI)(
+        IShellUIHelper* This,
+        BSTR bstrName,
+        VARIANT *pvarIn,
+        VARIANT *pvarOut);
+
     END_INTERFACE
-  } IShellUIHelperVtbl;
-  struct IShellUIHelper {
-    CONST_VTBL struct IShellUIHelperVtbl *lpVtbl;
-  };
+} IShellUIHelperVtbl;
+interface IShellUIHelper {
+    CONST_VTBL IShellUIHelperVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IShellUIHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IShellUIHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IShellUIHelper_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IShellUIHelper_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IShellUIHelper_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IShellUIHelper_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IShellUIHelper_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IShellUIHelper methods ***/
 #define IShellUIHelper_ResetFirstBootMode(This) (This)->lpVtbl->ResetFirstBootMode(This)
 #define IShellUIHelper_ResetSafeMode(This) (This)->lpVtbl->ResetSafeMode(This)
 #define IShellUIHelper_RefreshOfflineDesktop(This) (This)->lpVtbl->RefreshOfflineDesktop(This)
@@ -1074,130 +3397,1014 @@
 #define IShellUIHelper_AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame) (This)->lpVtbl->AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame)
 #define IShellUIHelper_AutoCompleteAttach(This,Reserved) (This)->lpVtbl->AutoCompleteAttach(This,Reserved)
 #define IShellUIHelper_ShowBrowserUI(This,bstrName,pvarIn,pvarOut) (This)->lpVtbl->ShowBrowserUI(This,bstrName,pvarIn,pvarOut)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellUIHelper_QueryInterface(IShellUIHelper* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellUIHelper_AddRef(IShellUIHelper* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellUIHelper_Release(IShellUIHelper* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IShellUIHelper_GetTypeInfoCount(IShellUIHelper* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IShellUIHelper_GetTypeInfo(IShellUIHelper* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IShellUIHelper_GetIDsOfNames(IShellUIHelper* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IShellUIHelper_Invoke(IShellUIHelper* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IShellUIHelper methods ***/
+static FORCEINLINE HRESULT IShellUIHelper_ResetFirstBootMode(IShellUIHelper* This) {
+    return This->lpVtbl->ResetFirstBootMode(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper_ResetSafeMode(IShellUIHelper* This) {
+    return This->lpVtbl->ResetSafeMode(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper_RefreshOfflineDesktop(IShellUIHelper* This) {
+    return This->lpVtbl->RefreshOfflineDesktop(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AddFavorite(IShellUIHelper* This,BSTR URL,VARIANT *Title) {
+    return This->lpVtbl->AddFavorite(This,URL,Title);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AddChannel(IShellUIHelper* This,BSTR URL) {
+    return This->lpVtbl->AddChannel(This,URL);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AddDesktopComponent(IShellUIHelper* This,BSTR URL,BSTR Type,VARIANT *Left,VARIANT *Top,VARIANT *Width,VARIANT *Height) {
+    return This->lpVtbl->AddDesktopComponent(This,URL,Type,Left,Top,Width,Height);
+}
+static FORCEINLINE HRESULT IShellUIHelper_IsSubscribed(IShellUIHelper* This,BSTR URL,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->IsSubscribed(This,URL,pBool);
+}
+static FORCEINLINE HRESULT IShellUIHelper_NavigateAndFind(IShellUIHelper* This,BSTR URL,BSTR strQuery,VARIANT *varTargetFrame) {
+    return This->lpVtbl->NavigateAndFind(This,URL,strQuery,varTargetFrame);
+}
+static FORCEINLINE HRESULT IShellUIHelper_ImportExportFavorites(IShellUIHelper* This,VARIANT_BOOL fImport,BSTR strImpExpPath) {
+    return This->lpVtbl->ImportExportFavorites(This,fImport,strImpExpPath);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AutoCompleteSaveForm(IShellUIHelper* This,VARIANT *Form) {
+    return This->lpVtbl->AutoCompleteSaveForm(This,Form);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AutoScan(IShellUIHelper* This,BSTR strSearch,BSTR strFailureUrl,VARIANT *pvarTargetFrame) {
+    return This->lpVtbl->AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame);
+}
+static FORCEINLINE HRESULT IShellUIHelper_AutoCompleteAttach(IShellUIHelper* This,VARIANT *Reserved) {
+    return This->lpVtbl->AutoCompleteAttach(This,Reserved);
+}
+static FORCEINLINE HRESULT IShellUIHelper_ShowBrowserUI(IShellUIHelper* This,BSTR bstrName,VARIANT *pvarIn,VARIANT *pvarOut) {
+    return This->lpVtbl->ShowBrowserUI(This,bstrName,pvarIn,pvarOut);
+}
 #endif
 #endif
-  HRESULT WINAPI IShellUIHelper_ResetFirstBootMode_Proxy(IShellUIHelper *This);
-  void __RPC_STUB IShellUIHelper_ResetFirstBootMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_ResetSafeMode_Proxy(IShellUIHelper *This);
-  void __RPC_STUB IShellUIHelper_ResetSafeMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_RefreshOfflineDesktop_Proxy(IShellUIHelper *This);
-  void __RPC_STUB IShellUIHelper_RefreshOfflineDesktop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AddFavorite_Proxy(IShellUIHelper *This,BSTR URL,VARIANT *Title);
-  void __RPC_STUB IShellUIHelper_AddFavorite_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AddChannel_Proxy(IShellUIHelper *This,BSTR URL);
-  void __RPC_STUB IShellUIHelper_AddChannel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AddDesktopComponent_Proxy(IShellUIHelper *This,BSTR URL,BSTR Type,VARIANT *Left,VARIANT *Top,VARIANT *Width,VARIANT *Height);
-  void __RPC_STUB IShellUIHelper_AddDesktopComponent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_IsSubscribed_Proxy(IShellUIHelper *This,BSTR URL,VARIANT_BOOL *pBool);
-  void __RPC_STUB IShellUIHelper_IsSubscribed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_NavigateAndFind_Proxy(IShellUIHelper *This,BSTR URL,BSTR strQuery,VARIANT *varTargetFrame);
-  void __RPC_STUB IShellUIHelper_NavigateAndFind_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_ImportExportFavorites_Proxy(IShellUIHelper *This,VARIANT_BOOL fImport,BSTR strImpExpPath);
-  void __RPC_STUB IShellUIHelper_ImportExportFavorites_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AutoCompleteSaveForm_Proxy(IShellUIHelper *This,VARIANT *Form);
-  void __RPC_STUB IShellUIHelper_AutoCompleteSaveForm_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AutoScan_Proxy(IShellUIHelper *This,BSTR strSearch,BSTR strFailureUrl,VARIANT *pvarTargetFrame);
-  void __RPC_STUB IShellUIHelper_AutoScan_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_AutoCompleteAttach_Proxy(IShellUIHelper *This,VARIANT *Reserved);
-  void __RPC_STUB IShellUIHelper_AutoCompleteAttach_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellUIHelper_ShowBrowserUI_Proxy(IShellUIHelper *This,BSTR bstrName,VARIANT *pvarIn,VARIANT *pvarOut);
-  void __RPC_STUB IShellUIHelper_ShowBrowserUI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
-  EXTERN_C const CLSID CLSID_ShellUIHelper;
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellUIHelper_ResetFirstBootMode_Proxy(
+    IShellUIHelper* This);
+void __RPC_STUB IShellUIHelper_ResetFirstBootMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_ResetSafeMode_Proxy(
+    IShellUIHelper* This);
+void __RPC_STUB IShellUIHelper_ResetSafeMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_RefreshOfflineDesktop_Proxy(
+    IShellUIHelper* This);
+void __RPC_STUB IShellUIHelper_RefreshOfflineDesktop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AddFavorite_Proxy(
+    IShellUIHelper* This,
+    BSTR URL,
+    VARIANT *Title);
+void __RPC_STUB IShellUIHelper_AddFavorite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AddChannel_Proxy(
+    IShellUIHelper* This,
+    BSTR URL);
+void __RPC_STUB IShellUIHelper_AddChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AddDesktopComponent_Proxy(
+    IShellUIHelper* This,
+    BSTR URL,
+    BSTR Type,
+    VARIANT *Left,
+    VARIANT *Top,
+    VARIANT *Width,
+    VARIANT *Height);
+void __RPC_STUB IShellUIHelper_AddDesktopComponent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_IsSubscribed_Proxy(
+    IShellUIHelper* This,
+    BSTR URL,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IShellUIHelper_IsSubscribed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_NavigateAndFind_Proxy(
+    IShellUIHelper* This,
+    BSTR URL,
+    BSTR strQuery,
+    VARIANT *varTargetFrame);
+void __RPC_STUB IShellUIHelper_NavigateAndFind_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_ImportExportFavorites_Proxy(
+    IShellUIHelper* This,
+    VARIANT_BOOL fImport,
+    BSTR strImpExpPath);
+void __RPC_STUB IShellUIHelper_ImportExportFavorites_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AutoCompleteSaveForm_Proxy(
+    IShellUIHelper* This,
+    VARIANT *Form);
+void __RPC_STUB IShellUIHelper_AutoCompleteSaveForm_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AutoScan_Proxy(
+    IShellUIHelper* This,
+    BSTR strSearch,
+    BSTR strFailureUrl,
+    VARIANT *pvarTargetFrame);
+void __RPC_STUB IShellUIHelper_AutoScan_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_AutoCompleteAttach_Proxy(
+    IShellUIHelper* This,
+    VARIANT *Reserved);
+void __RPC_STUB IShellUIHelper_AutoCompleteAttach_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper_ShowBrowserUI_Proxy(
+    IShellUIHelper* This,
+    BSTR bstrName,
+    VARIANT *pvarIn,
+    VARIANT *pvarOut);
+void __RPC_STUB IShellUIHelper_ShowBrowserUI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellUIHelper_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IShellUIHelper2 interface
+ */
+#ifndef __IShellUIHelper2_INTERFACE_DEFINED__
+#define __IShellUIHelper2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IShellUIHelper2, 0xa7fe6eda, 0x1932, 0x4281, 0xb8,0x81, 0x87,0xb3,0x1b,0x8b,0xc5,0x2c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a7fe6eda-1932-4281-b881-87b31b8bc52c")
+IShellUIHelper2 : public IShellUIHelper
+{
+    virtual HRESULT STDMETHODCALLTYPE AddSearchProvider(
+        BSTR URL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RunOnceShown(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SkipRunOnce(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CustomizeSettings(
+        VARIANT_BOOL fSQM,
+        VARIANT_BOOL fPhishing,
+        BSTR bstrLocale) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SqmEnabled(
+        VARIANT_BOOL *pfEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PhishingEnabled(
+        VARIANT_BOOL *pfEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BrandImageUri(
+        BSTR *pbstrUri) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SkipTabsWelcome(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DiagnoseConnection(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CustomizeClearType(
+        VARIANT_BOOL fSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsSearchProviderInstalled(
+        BSTR URL,
+        DWORD *pdwResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsSearchMigrated(
+        VARIANT_BOOL *pfMigrated) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DefaultSearchProvider(
+        BSTR *pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RunOnceRequiredSettingsComplete(
+        VARIANT_BOOL fComplete) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RunOnceHasShown(
+        VARIANT_BOOL *pfShown) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchGuideUrl(
+        BSTR *pbstrUrl) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellUIHelper2, 0xa7fe6eda, 0x1932, 0x4281, 0xb8,0x81, 0x87,0xb3,0x1b,0x8b,0xc5,0x2c)
+#endif
+#else
+typedef struct IShellUIHelper2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellUIHelper2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellUIHelper2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellUIHelper2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IShellUIHelper2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IShellUIHelper2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IShellUIHelper2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IShellUIHelper2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IShellUIHelper methods ***/
+    HRESULT (STDMETHODCALLTYPE *ResetFirstBootMode)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *ResetSafeMode)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *RefreshOfflineDesktop)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddFavorite)(
+        IShellUIHelper2* This,
+        BSTR URL,
+        VARIANT *Title);
+
+    HRESULT (STDMETHODCALLTYPE *AddChannel)(
+        IShellUIHelper2* This,
+        BSTR URL);
+
+    HRESULT (STDMETHODCALLTYPE *AddDesktopComponent)(
+        IShellUIHelper2* This,
+        BSTR URL,
+        BSTR Type,
+        VARIANT *Left,
+        VARIANT *Top,
+        VARIANT *Width,
+        VARIANT *Height);
+
+    HRESULT (STDMETHODCALLTYPE *IsSubscribed)(
+        IShellUIHelper2* This,
+        BSTR URL,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *NavigateAndFind)(
+        IShellUIHelper2* This,
+        BSTR URL,
+        BSTR strQuery,
+        VARIANT *varTargetFrame);
+
+    HRESULT (STDMETHODCALLTYPE *ImportExportFavorites)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL fImport,
+        BSTR strImpExpPath);
+
+    HRESULT (STDMETHODCALLTYPE *AutoCompleteSaveForm)(
+        IShellUIHelper2* This,
+        VARIANT *Form);
+
+    HRESULT (STDMETHODCALLTYPE *AutoScan)(
+        IShellUIHelper2* This,
+        BSTR strSearch,
+        BSTR strFailureUrl,
+        VARIANT *pvarTargetFrame);
+
+    HRESULT (STDMETHODCALLTYPE *AutoCompleteAttach)(
+        IShellUIHelper2* This,
+        VARIANT *Reserved);
+
+    HRESULT (STDMETHODCALLTYPE *ShowBrowserUI)(
+        IShellUIHelper2* This,
+        BSTR bstrName,
+        VARIANT *pvarIn,
+        VARIANT *pvarOut);
+
+    /*** IShellUIHelper2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddSearchProvider)(
+        IShellUIHelper2* This,
+        BSTR URL);
+
+    HRESULT (STDMETHODCALLTYPE *RunOnceShown)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *SkipRunOnce)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *CustomizeSettings)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL fSQM,
+        VARIANT_BOOL fPhishing,
+        BSTR bstrLocale);
+
+    HRESULT (STDMETHODCALLTYPE *SqmEnabled)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL *pfEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *PhishingEnabled)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL *pfEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *BrandImageUri)(
+        IShellUIHelper2* This,
+        BSTR *pbstrUri);
+
+    HRESULT (STDMETHODCALLTYPE *SkipTabsWelcome)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *DiagnoseConnection)(
+        IShellUIHelper2* This);
+
+    HRESULT (STDMETHODCALLTYPE *CustomizeClearType)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL fSet);
+
+    HRESULT (STDMETHODCALLTYPE *IsSearchProviderInstalled)(
+        IShellUIHelper2* This,
+        BSTR URL,
+        DWORD *pdwResult);
+
+    HRESULT (STDMETHODCALLTYPE *IsSearchMigrated)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL *pfMigrated);
+
+    HRESULT (STDMETHODCALLTYPE *DefaultSearchProvider)(
+        IShellUIHelper2* This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *RunOnceRequiredSettingsComplete)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL fComplete);
+
+    HRESULT (STDMETHODCALLTYPE *RunOnceHasShown)(
+        IShellUIHelper2* This,
+        VARIANT_BOOL *pfShown);
+
+    HRESULT (STDMETHODCALLTYPE *SearchGuideUrl)(
+        IShellUIHelper2* This,
+        BSTR *pbstrUrl);
+
+    END_INTERFACE
+} IShellUIHelper2Vtbl;
+interface IShellUIHelper2 {
+    CONST_VTBL IShellUIHelper2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IShellUIHelper2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellUIHelper2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellUIHelper2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IShellUIHelper2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IShellUIHelper2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IShellUIHelper2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IShellUIHelper2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IShellUIHelper methods ***/
+#define IShellUIHelper2_ResetFirstBootMode(This) (This)->lpVtbl->ResetFirstBootMode(This)
+#define IShellUIHelper2_ResetSafeMode(This) (This)->lpVtbl->ResetSafeMode(This)
+#define IShellUIHelper2_RefreshOfflineDesktop(This) (This)->lpVtbl->RefreshOfflineDesktop(This)
+#define IShellUIHelper2_AddFavorite(This,URL,Title) (This)->lpVtbl->AddFavorite(This,URL,Title)
+#define IShellUIHelper2_AddChannel(This,URL) (This)->lpVtbl->AddChannel(This,URL)
+#define IShellUIHelper2_AddDesktopComponent(This,URL,Type,Left,Top,Width,Height) (This)->lpVtbl->AddDesktopComponent(This,URL,Type,Left,Top,Width,Height)
+#define IShellUIHelper2_IsSubscribed(This,URL,pBool) (This)->lpVtbl->IsSubscribed(This,URL,pBool)
+#define IShellUIHelper2_NavigateAndFind(This,URL,strQuery,varTargetFrame) (This)->lpVtbl->NavigateAndFind(This,URL,strQuery,varTargetFrame)
+#define IShellUIHelper2_ImportExportFavorites(This,fImport,strImpExpPath) (This)->lpVtbl->ImportExportFavorites(This,fImport,strImpExpPath)
+#define IShellUIHelper2_AutoCompleteSaveForm(This,Form) (This)->lpVtbl->AutoCompleteSaveForm(This,Form)
+#define IShellUIHelper2_AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame) (This)->lpVtbl->AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame)
+#define IShellUIHelper2_AutoCompleteAttach(This,Reserved) (This)->lpVtbl->AutoCompleteAttach(This,Reserved)
+#define IShellUIHelper2_ShowBrowserUI(This,bstrName,pvarIn,pvarOut) (This)->lpVtbl->ShowBrowserUI(This,bstrName,pvarIn,pvarOut)
+/*** IShellUIHelper2 methods ***/
+#define IShellUIHelper2_AddSearchProvider(This,URL) (This)->lpVtbl->AddSearchProvider(This,URL)
+#define IShellUIHelper2_RunOnceShown(This) (This)->lpVtbl->RunOnceShown(This)
+#define IShellUIHelper2_SkipRunOnce(This) (This)->lpVtbl->SkipRunOnce(This)
+#define IShellUIHelper2_CustomizeSettings(This,fSQM,fPhishing,bstrLocale) (This)->lpVtbl->CustomizeSettings(This,fSQM,fPhishing,bstrLocale)
+#define IShellUIHelper2_SqmEnabled(This,pfEnabled) (This)->lpVtbl->SqmEnabled(This,pfEnabled)
+#define IShellUIHelper2_PhishingEnabled(This,pfEnabled) (This)->lpVtbl->PhishingEnabled(This,pfEnabled)
+#define IShellUIHelper2_BrandImageUri(This,pbstrUri) (This)->lpVtbl->BrandImageUri(This,pbstrUri)
+#define IShellUIHelper2_SkipTabsWelcome(This) (This)->lpVtbl->SkipTabsWelcome(This)
+#define IShellUIHelper2_DiagnoseConnection(This) (This)->lpVtbl->DiagnoseConnection(This)
+#define IShellUIHelper2_CustomizeClearType(This,fSet) (This)->lpVtbl->CustomizeClearType(This,fSet)
+#define IShellUIHelper2_IsSearchProviderInstalled(This,URL,pdwResult) (This)->lpVtbl->IsSearchProviderInstalled(This,URL,pdwResult)
+#define IShellUIHelper2_IsSearchMigrated(This,pfMigrated) (This)->lpVtbl->IsSearchMigrated(This,pfMigrated)
+#define IShellUIHelper2_DefaultSearchProvider(This,pbstrName) (This)->lpVtbl->DefaultSearchProvider(This,pbstrName)
+#define IShellUIHelper2_RunOnceRequiredSettingsComplete(This,fComplete) (This)->lpVtbl->RunOnceRequiredSettingsComplete(This,fComplete)
+#define IShellUIHelper2_RunOnceHasShown(This,pfShown) (This)->lpVtbl->RunOnceHasShown(This,pfShown)
+#define IShellUIHelper2_SearchGuideUrl(This,pbstrUrl) (This)->lpVtbl->SearchGuideUrl(This,pbstrUrl)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellUIHelper2_QueryInterface(IShellUIHelper2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellUIHelper2_AddRef(IShellUIHelper2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellUIHelper2_Release(IShellUIHelper2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IShellUIHelper2_GetTypeInfoCount(IShellUIHelper2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_GetTypeInfo(IShellUIHelper2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_GetIDsOfNames(IShellUIHelper2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_Invoke(IShellUIHelper2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IShellUIHelper methods ***/
+static FORCEINLINE HRESULT IShellUIHelper2_ResetFirstBootMode(IShellUIHelper2* This) {
+    return This->lpVtbl->ResetFirstBootMode(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_ResetSafeMode(IShellUIHelper2* This) {
+    return This->lpVtbl->ResetSafeMode(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_RefreshOfflineDesktop(IShellUIHelper2* This) {
+    return This->lpVtbl->RefreshOfflineDesktop(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AddFavorite(IShellUIHelper2* This,BSTR URL,VARIANT *Title) {
+    return This->lpVtbl->AddFavorite(This,URL,Title);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AddChannel(IShellUIHelper2* This,BSTR URL) {
+    return This->lpVtbl->AddChannel(This,URL);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AddDesktopComponent(IShellUIHelper2* This,BSTR URL,BSTR Type,VARIANT *Left,VARIANT *Top,VARIANT *Width,VARIANT *Height) {
+    return This->lpVtbl->AddDesktopComponent(This,URL,Type,Left,Top,Width,Height);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_IsSubscribed(IShellUIHelper2* This,BSTR URL,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->IsSubscribed(This,URL,pBool);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_NavigateAndFind(IShellUIHelper2* This,BSTR URL,BSTR strQuery,VARIANT *varTargetFrame) {
+    return This->lpVtbl->NavigateAndFind(This,URL,strQuery,varTargetFrame);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_ImportExportFavorites(IShellUIHelper2* This,VARIANT_BOOL fImport,BSTR strImpExpPath) {
+    return This->lpVtbl->ImportExportFavorites(This,fImport,strImpExpPath);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AutoCompleteSaveForm(IShellUIHelper2* This,VARIANT *Form) {
+    return This->lpVtbl->AutoCompleteSaveForm(This,Form);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AutoScan(IShellUIHelper2* This,BSTR strSearch,BSTR strFailureUrl,VARIANT *pvarTargetFrame) {
+    return This->lpVtbl->AutoScan(This,strSearch,strFailureUrl,pvarTargetFrame);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_AutoCompleteAttach(IShellUIHelper2* This,VARIANT *Reserved) {
+    return This->lpVtbl->AutoCompleteAttach(This,Reserved);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_ShowBrowserUI(IShellUIHelper2* This,BSTR bstrName,VARIANT *pvarIn,VARIANT *pvarOut) {
+    return This->lpVtbl->ShowBrowserUI(This,bstrName,pvarIn,pvarOut);
+}
+/*** IShellUIHelper2 methods ***/
+static FORCEINLINE HRESULT IShellUIHelper2_AddSearchProvider(IShellUIHelper2* This,BSTR URL) {
+    return This->lpVtbl->AddSearchProvider(This,URL);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_RunOnceShown(IShellUIHelper2* This) {
+    return This->lpVtbl->RunOnceShown(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_SkipRunOnce(IShellUIHelper2* This) {
+    return This->lpVtbl->SkipRunOnce(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_CustomizeSettings(IShellUIHelper2* This,VARIANT_BOOL fSQM,VARIANT_BOOL fPhishing,BSTR bstrLocale) {
+    return This->lpVtbl->CustomizeSettings(This,fSQM,fPhishing,bstrLocale);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_SqmEnabled(IShellUIHelper2* This,VARIANT_BOOL *pfEnabled) {
+    return This->lpVtbl->SqmEnabled(This,pfEnabled);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_PhishingEnabled(IShellUIHelper2* This,VARIANT_BOOL *pfEnabled) {
+    return This->lpVtbl->PhishingEnabled(This,pfEnabled);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_BrandImageUri(IShellUIHelper2* This,BSTR *pbstrUri) {
+    return This->lpVtbl->BrandImageUri(This,pbstrUri);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_SkipTabsWelcome(IShellUIHelper2* This) {
+    return This->lpVtbl->SkipTabsWelcome(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_DiagnoseConnection(IShellUIHelper2* This) {
+    return This->lpVtbl->DiagnoseConnection(This);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_CustomizeClearType(IShellUIHelper2* This,VARIANT_BOOL fSet) {
+    return This->lpVtbl->CustomizeClearType(This,fSet);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_IsSearchProviderInstalled(IShellUIHelper2* This,BSTR URL,DWORD *pdwResult) {
+    return This->lpVtbl->IsSearchProviderInstalled(This,URL,pdwResult);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_IsSearchMigrated(IShellUIHelper2* This,VARIANT_BOOL *pfMigrated) {
+    return This->lpVtbl->IsSearchMigrated(This,pfMigrated);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_DefaultSearchProvider(IShellUIHelper2* This,BSTR *pbstrName) {
+    return This->lpVtbl->DefaultSearchProvider(This,pbstrName);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_RunOnceRequiredSettingsComplete(IShellUIHelper2* This,VARIANT_BOOL fComplete) {
+    return This->lpVtbl->RunOnceRequiredSettingsComplete(This,fComplete);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_RunOnceHasShown(IShellUIHelper2* This,VARIANT_BOOL *pfShown) {
+    return This->lpVtbl->RunOnceHasShown(This,pfShown);
+}
+static FORCEINLINE HRESULT IShellUIHelper2_SearchGuideUrl(IShellUIHelper2* This,BSTR *pbstrUrl) {
+    return This->lpVtbl->SearchGuideUrl(This,pbstrUrl);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_AddSearchProvider_Proxy(
+    IShellUIHelper2* This,
+    BSTR URL);
+void __RPC_STUB IShellUIHelper2_AddSearchProvider_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_RunOnceShown_Proxy(
+    IShellUIHelper2* This);
+void __RPC_STUB IShellUIHelper2_RunOnceShown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_SkipRunOnce_Proxy(
+    IShellUIHelper2* This);
+void __RPC_STUB IShellUIHelper2_SkipRunOnce_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_CustomizeSettings_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL fSQM,
+    VARIANT_BOOL fPhishing,
+    BSTR bstrLocale);
+void __RPC_STUB IShellUIHelper2_CustomizeSettings_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_SqmEnabled_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL *pfEnabled);
+void __RPC_STUB IShellUIHelper2_SqmEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_PhishingEnabled_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL *pfEnabled);
+void __RPC_STUB IShellUIHelper2_PhishingEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_BrandImageUri_Proxy(
+    IShellUIHelper2* This,
+    BSTR *pbstrUri);
+void __RPC_STUB IShellUIHelper2_BrandImageUri_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_SkipTabsWelcome_Proxy(
+    IShellUIHelper2* This);
+void __RPC_STUB IShellUIHelper2_SkipTabsWelcome_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_DiagnoseConnection_Proxy(
+    IShellUIHelper2* This);
+void __RPC_STUB IShellUIHelper2_DiagnoseConnection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_CustomizeClearType_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL fSet);
+void __RPC_STUB IShellUIHelper2_CustomizeClearType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_IsSearchProviderInstalled_Proxy(
+    IShellUIHelper2* This,
+    BSTR URL,
+    DWORD *pdwResult);
+void __RPC_STUB IShellUIHelper2_IsSearchProviderInstalled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_IsSearchMigrated_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL *pfMigrated);
+void __RPC_STUB IShellUIHelper2_IsSearchMigrated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_DefaultSearchProvider_Proxy(
+    IShellUIHelper2* This,
+    BSTR *pbstrName);
+void __RPC_STUB IShellUIHelper2_DefaultSearchProvider_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_RunOnceRequiredSettingsComplete_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL fComplete);
+void __RPC_STUB IShellUIHelper2_RunOnceRequiredSettingsComplete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_RunOnceHasShown_Proxy(
+    IShellUIHelper2* This,
+    VARIANT_BOOL *pfShown);
+void __RPC_STUB IShellUIHelper2_RunOnceHasShown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellUIHelper2_SearchGuideUrl_Proxy(
+    IShellUIHelper2* This,
+    BSTR *pbstrUrl);
+void __RPC_STUB IShellUIHelper2_SearchGuideUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellUIHelper2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ShellUIHelper coclass
+ */
+
+DEFINE_GUID(CLSID_ShellUIHelper, 0x64ab4bb7, 0x111e, 0x11d1, 0x8f,0x79, 0x00,0xc0,0x4f,0xc2,0xfb,0xe1);
+
 #ifdef __cplusplus
-  class ShellUIHelper;
+class DECLSPEC_UUID("64ab4bb7-111e-11d1-8f79-00c04fc2fbe1") ShellUIHelper;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellUIHelper, 0x64ab4bb7, 0x111e, 0x11d1, 0x8f,0x79, 0x00,0xc0,0x4f,0xc2,0xfb,0xe1)
+#endif
 #endif
 
+/*****************************************************************************
+ * DShellNameSpaceEvents dispinterface
+ */
 #ifndef __DShellNameSpaceEvents_DISPINTERFACE_DEFINED__
 #define __DShellNameSpaceEvents_DISPINTERFACE_DEFINED__
-  EXTERN_C const IID DIID_DShellNameSpaceEvents;
+
+DEFINE_GUID(DIID_DShellNameSpaceEvents, 0x55136806, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct DShellNameSpaceEvents : public IDispatch {
-  };
+MIDL_INTERFACE("55136806-b2de-11d1-b9f2-00a0c98bc547")
+DShellNameSpaceEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DShellNameSpaceEvents, 0x55136806, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47)
+#endif
 #else
-  typedef struct DShellNameSpaceEventsVtbl {
+typedef struct DShellNameSpaceEventsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(DShellNameSpaceEvents *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(DShellNameSpaceEvents *This);
-      ULONG (WINAPI *Release)(DShellNameSpaceEvents *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(DShellNameSpaceEvents *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(DShellNameSpaceEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(DShellNameSpaceEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(DShellNameSpaceEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        DShellNameSpaceEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        DShellNameSpaceEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        DShellNameSpaceEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        DShellNameSpaceEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        DShellNameSpaceEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        DShellNameSpaceEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        DShellNameSpaceEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
     END_INTERFACE
-  } DShellNameSpaceEventsVtbl;
-  struct DShellNameSpaceEvents {
-    CONST_VTBL struct DShellNameSpaceEventsVtbl *lpVtbl;
-  };
+} DShellNameSpaceEventsVtbl;
+interface DShellNameSpaceEvents {
+    CONST_VTBL DShellNameSpaceEventsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define DShellNameSpaceEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define DShellNameSpaceEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define DShellNameSpaceEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define DShellNameSpaceEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define DShellNameSpaceEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define DShellNameSpaceEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define DShellNameSpaceEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#endif
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT DShellNameSpaceEvents_QueryInterface(DShellNameSpaceEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG DShellNameSpaceEvents_AddRef(DShellNameSpaceEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG DShellNameSpaceEvents_Release(DShellNameSpaceEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT DShellNameSpaceEvents_GetTypeInfoCount(DShellNameSpaceEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT DShellNameSpaceEvents_GetTypeInfo(DShellNameSpaceEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT DShellNameSpaceEvents_GetIDsOfNames(DShellNameSpaceEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT DShellNameSpaceEvents_Invoke(DShellNameSpaceEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
 #endif
 #endif
 
+#endif
+
+#endif  /* __DShellNameSpaceEvents_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IShellFavoritesNameSpace interface
+ */
 #ifndef __IShellFavoritesNameSpace_INTERFACE_DEFINED__
 #define __IShellFavoritesNameSpace_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IShellFavoritesNameSpace;
+
+DEFINE_GUID(IID_IShellFavoritesNameSpace, 0x55136804, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IShellFavoritesNameSpace : public IDispatch {
-  public:
-    virtual HRESULT WINAPI MoveSelectionUp(void) = 0;
-    virtual HRESULT WINAPI MoveSelectionDown(void) = 0;
-    virtual HRESULT WINAPI ResetSort(void) = 0;
-    virtual HRESULT WINAPI NewFolder(void) = 0;
-    virtual HRESULT WINAPI Synchronize(void) = 0;
-    virtual HRESULT WINAPI Import(void) = 0;
-    virtual HRESULT WINAPI Export(void) = 0;
-    virtual HRESULT WINAPI InvokeContextMenuCommand(BSTR strCommand) = 0;
-    virtual HRESULT WINAPI MoveSelectionTo(void) = 0;
-    virtual HRESULT WINAPI get_SubscriptionsEnabled(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI CreateSubscriptionForSelection(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI DeleteSubscriptionForSelection(VARIANT_BOOL *pBool) = 0;
-    virtual HRESULT WINAPI SetRoot(BSTR bstrFullPath) = 0;
-  };
+MIDL_INTERFACE("55136804-b2de-11d1-b9f2-00a0c98bc547")
+IShellFavoritesNameSpace : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE MoveSelectionUp(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MoveSelectionDown(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResetSort(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NewFolder(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Synchronize(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Import(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Export(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InvokeContextMenuCommand(
+        BSTR strCommand) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MoveSelectionTo(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SubscriptionsEnabled(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSubscriptionForSelection(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteSubscriptionForSelection(
+        VARIANT_BOOL *pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRoot(
+        BSTR bstrFullPath) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellFavoritesNameSpace, 0x55136804, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47)
+#endif
 #else
-  typedef struct IShellFavoritesNameSpaceVtbl {
+typedef struct IShellFavoritesNameSpaceVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IShellFavoritesNameSpace *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IShellFavoritesNameSpace *This);
-      ULONG (WINAPI *Release)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IShellFavoritesNameSpace *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IShellFavoritesNameSpace *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IShellFavoritesNameSpace *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IShellFavoritesNameSpace *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *MoveSelectionUp)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *MoveSelectionDown)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *ResetSort)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *NewFolder)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *Synchronize)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *Import)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *Export)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *InvokeContextMenuCommand)(IShellFavoritesNameSpace *This,BSTR strCommand);
-      HRESULT (WINAPI *MoveSelectionTo)(IShellFavoritesNameSpace *This);
-      HRESULT (WINAPI *get_SubscriptionsEnabled)(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *CreateSubscriptionForSelection)(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *DeleteSubscriptionForSelection)(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *SetRoot)(IShellFavoritesNameSpace *This,BSTR bstrFullPath);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellFavoritesNameSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellFavoritesNameSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellFavoritesNameSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IShellFavoritesNameSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IShellFavoritesNameSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IShellFavoritesNameSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IShellFavoritesNameSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IShellFavoritesNameSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionUp)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionDown)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *ResetSort)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *NewFolder)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Synchronize)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Import)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Export)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *InvokeContextMenuCommand)(
+        IShellFavoritesNameSpace* This,
+        BSTR strCommand);
+
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionTo)(
+        IShellFavoritesNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_SubscriptionsEnabled)(
+        IShellFavoritesNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSubscriptionForSelection)(
+        IShellFavoritesNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteSubscriptionForSelection)(
+        IShellFavoritesNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *SetRoot)(
+        IShellFavoritesNameSpace* This,
+        BSTR bstrFullPath);
+
     END_INTERFACE
-  } IShellFavoritesNameSpaceVtbl;
-  struct IShellFavoritesNameSpace {
-    CONST_VTBL struct IShellFavoritesNameSpaceVtbl *lpVtbl;
-  };
+} IShellFavoritesNameSpaceVtbl;
+interface IShellFavoritesNameSpace {
+    CONST_VTBL IShellFavoritesNameSpaceVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IShellFavoritesNameSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IShellFavoritesNameSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IShellFavoritesNameSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IShellFavoritesNameSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IShellFavoritesNameSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IShellFavoritesNameSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IShellFavoritesNameSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IShellFavoritesNameSpace methods ***/
 #define IShellFavoritesNameSpace_MoveSelectionUp(This) (This)->lpVtbl->MoveSelectionUp(This)
 #define IShellFavoritesNameSpace_MoveSelectionDown(This) (This)->lpVtbl->MoveSelectionDown(This)
 #define IShellFavoritesNameSpace_ResetSort(This) (This)->lpVtbl->ResetSort(This)
@@ -1211,121 +4418,447 @@
 #define IShellFavoritesNameSpace_CreateSubscriptionForSelection(This,pBool) (This)->lpVtbl->CreateSubscriptionForSelection(This,pBool)
 #define IShellFavoritesNameSpace_DeleteSubscriptionForSelection(This,pBool) (This)->lpVtbl->DeleteSubscriptionForSelection(This,pBool)
 #define IShellFavoritesNameSpace_SetRoot(This,bstrFullPath) (This)->lpVtbl->SetRoot(This,bstrFullPath)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_QueryInterface(IShellFavoritesNameSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellFavoritesNameSpace_AddRef(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellFavoritesNameSpace_Release(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_GetTypeInfoCount(IShellFavoritesNameSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_GetTypeInfo(IShellFavoritesNameSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_GetIDsOfNames(IShellFavoritesNameSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_Invoke(IShellFavoritesNameSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IShellFavoritesNameSpace methods ***/
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_MoveSelectionUp(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->MoveSelectionUp(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_MoveSelectionDown(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->MoveSelectionDown(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_ResetSort(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->ResetSort(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_NewFolder(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->NewFolder(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_Synchronize(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->Synchronize(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_Import(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->Import(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_Export(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->Export(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_InvokeContextMenuCommand(IShellFavoritesNameSpace* This,BSTR strCommand) {
+    return This->lpVtbl->InvokeContextMenuCommand(This,strCommand);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_MoveSelectionTo(IShellFavoritesNameSpace* This) {
+    return This->lpVtbl->MoveSelectionTo(This);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_get_SubscriptionsEnabled(IShellFavoritesNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_SubscriptionsEnabled(This,pBool);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_CreateSubscriptionForSelection(IShellFavoritesNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->CreateSubscriptionForSelection(This,pBool);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_DeleteSubscriptionForSelection(IShellFavoritesNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->DeleteSubscriptionForSelection(This,pBool);
+}
+static FORCEINLINE HRESULT IShellFavoritesNameSpace_SetRoot(IShellFavoritesNameSpace* This,BSTR bstrFullPath) {
+    return This->lpVtbl->SetRoot(This,bstrFullPath);
+}
 #endif
 #endif
-  HRESULT WINAPI IShellFavoritesNameSpace_MoveSelectionUp_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionUp_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_MoveSelectionDown_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionDown_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_ResetSort_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_ResetSort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_NewFolder_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_NewFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_Synchronize_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_Synchronize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_Import_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_Import_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_Export_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_Export_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_InvokeContextMenuCommand_Proxy(IShellFavoritesNameSpace *This,BSTR strCommand);
-  void __RPC_STUB IShellFavoritesNameSpace_InvokeContextMenuCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_MoveSelectionTo_Proxy(IShellFavoritesNameSpace *This);
-  void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionTo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_get_SubscriptionsEnabled_Proxy(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IShellFavoritesNameSpace_get_SubscriptionsEnabled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_CreateSubscriptionForSelection_Proxy(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IShellFavoritesNameSpace_CreateSubscriptionForSelection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_DeleteSubscriptionForSelection_Proxy(IShellFavoritesNameSpace *This,VARIANT_BOOL *pBool);
-  void __RPC_STUB IShellFavoritesNameSpace_DeleteSubscriptionForSelection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellFavoritesNameSpace_SetRoot_Proxy(IShellFavoritesNameSpace *This,BSTR bstrFullPath);
-  void __RPC_STUB IShellFavoritesNameSpace_SetRoot_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_MoveSelectionUp_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionUp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_MoveSelectionDown_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionDown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_ResetSort_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_ResetSort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_NewFolder_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_NewFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_Synchronize_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_Synchronize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_Import_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_Import_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_Export_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_Export_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_InvokeContextMenuCommand_Proxy(
+    IShellFavoritesNameSpace* This,
+    BSTR strCommand);
+void __RPC_STUB IShellFavoritesNameSpace_InvokeContextMenuCommand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_MoveSelectionTo_Proxy(
+    IShellFavoritesNameSpace* This);
+void __RPC_STUB IShellFavoritesNameSpace_MoveSelectionTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_get_SubscriptionsEnabled_Proxy(
+    IShellFavoritesNameSpace* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IShellFavoritesNameSpace_get_SubscriptionsEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_CreateSubscriptionForSelection_Proxy(
+    IShellFavoritesNameSpace* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IShellFavoritesNameSpace_CreateSubscriptionForSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_DeleteSubscriptionForSelection_Proxy(
+    IShellFavoritesNameSpace* This,
+    VARIANT_BOOL *pBool);
+void __RPC_STUB IShellFavoritesNameSpace_DeleteSubscriptionForSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellFavoritesNameSpace_SetRoot_Proxy(
+    IShellFavoritesNameSpace* This,
+    BSTR bstrFullPath);
+void __RPC_STUB IShellFavoritesNameSpace_SetRoot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellFavoritesNameSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IShellNameSpace interface
+ */
 #ifndef __IShellNameSpace_INTERFACE_DEFINED__
 #define __IShellNameSpace_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IShellNameSpace;
+
+DEFINE_GUID(IID_IShellNameSpace, 0xe572d3c9, 0x37be, 0x4ae2, 0x82,0x5d, 0xd5,0x21,0x76,0x3e,0x31,0x08);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IShellNameSpace : public IShellFavoritesNameSpace {
-  public:
-    virtual HRESULT WINAPI get_EnumOptions(LONG *pgrfEnumFlags) = 0;
-    virtual HRESULT WINAPI put_EnumOptions(LONG lVal) = 0;
-    virtual HRESULT WINAPI get_SelectedItem(IDispatch **pItem) = 0;
-    virtual HRESULT WINAPI put_SelectedItem(IDispatch *pItem) = 0;
-    virtual HRESULT WINAPI get_Root(VARIANT *pvar) = 0;
-    virtual HRESULT WINAPI put_Root(VARIANT var) = 0;
-    virtual HRESULT WINAPI get_Depth(int *piDepth) = 0;
-    virtual HRESULT WINAPI put_Depth(int iDepth) = 0;
-    virtual HRESULT WINAPI get_Mode(UINT *puMode) = 0;
-    virtual HRESULT WINAPI put_Mode(UINT uMode) = 0;
-    virtual HRESULT WINAPI get_Flags(DWORD *pdwFlags) = 0;
-    virtual HRESULT WINAPI put_Flags(DWORD dwFlags) = 0;
-    virtual HRESULT WINAPI put_TVFlags(DWORD dwFlags) = 0;
-    virtual HRESULT WINAPI get_TVFlags(DWORD *dwFlags) = 0;
-    virtual HRESULT WINAPI get_Columns(BSTR *bstrColumns) = 0;
-    virtual HRESULT WINAPI put_Columns(BSTR bstrColumns) = 0;
-    virtual HRESULT WINAPI get_CountViewTypes(int *piTypes) = 0;
-    virtual HRESULT WINAPI SetViewType(int iType) = 0;
-    virtual HRESULT WINAPI SelectedItems(IDispatch **ppid) = 0;
-    virtual HRESULT WINAPI Expand(VARIANT var,int iDepth) = 0;
-    virtual HRESULT WINAPI UnselectAll(void) = 0;
-  };
+MIDL_INTERFACE("e572d3c9-37be-4ae2-825d-d521763e3108")
+IShellNameSpace : public IShellFavoritesNameSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_EnumOptions(
+        LONG *pgrfEnumFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_EnumOptions(
+        LONG pgrfEnumFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SelectedItem(
+        IDispatch **pItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SelectedItem(
+        IDispatch *pItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Root(
+        VARIANT *pvar) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Root(
+        VARIANT pvar) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Depth(
+        int *piDepth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Depth(
+        int piDepth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Mode(
+        unsigned int *puMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Mode(
+        unsigned int puMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Flags(
+        ULONG *pdwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Flags(
+        ULONG pdwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TVFlags(
+        ULONG dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TVFlags(
+        ULONG *dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Columns(
+        BSTR *bstrColumns) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Columns(
+        BSTR bstrColumns) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CountViewTypes(
+        int *piTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetViewType(
+        int iType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SelectedItems(
+        IDispatch **ppid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Expand(
+        VARIANT var,
+        int iDepth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnselectAll(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellNameSpace, 0xe572d3c9, 0x37be, 0x4ae2, 0x82,0x5d, 0xd5,0x21,0x76,0x3e,0x31,0x08)
+#endif
 #else
-  typedef struct IShellNameSpaceVtbl {
+typedef struct IShellNameSpaceVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IShellNameSpace *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IShellNameSpace *This);
-      ULONG (WINAPI *Release)(IShellNameSpace *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IShellNameSpace *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IShellNameSpace *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IShellNameSpace *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IShellNameSpace *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *MoveSelectionUp)(IShellNameSpace *This);
-      HRESULT (WINAPI *MoveSelectionDown)(IShellNameSpace *This);
-      HRESULT (WINAPI *ResetSort)(IShellNameSpace *This);
-      HRESULT (WINAPI *NewFolder)(IShellNameSpace *This);
-      HRESULT (WINAPI *Synchronize)(IShellNameSpace *This);
-      HRESULT (WINAPI *Import)(IShellNameSpace *This);
-      HRESULT (WINAPI *Export)(IShellNameSpace *This);
-      HRESULT (WINAPI *InvokeContextMenuCommand)(IShellNameSpace *This,BSTR strCommand);
-      HRESULT (WINAPI *MoveSelectionTo)(IShellNameSpace *This);
-      HRESULT (WINAPI *get_SubscriptionsEnabled)(IShellNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *CreateSubscriptionForSelection)(IShellNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *DeleteSubscriptionForSelection)(IShellNameSpace *This,VARIANT_BOOL *pBool);
-      HRESULT (WINAPI *SetRoot)(IShellNameSpace *This,BSTR bstrFullPath);
-      HRESULT (WINAPI *get_EnumOptions)(IShellNameSpace *This,LONG *pgrfEnumFlags);
-      HRESULT (WINAPI *put_EnumOptions)(IShellNameSpace *This,LONG lVal);
-      HRESULT (WINAPI *get_SelectedItem)(IShellNameSpace *This,IDispatch **pItem);
-      HRESULT (WINAPI *put_SelectedItem)(IShellNameSpace *This,IDispatch *pItem);
-      HRESULT (WINAPI *get_Root)(IShellNameSpace *This,VARIANT *pvar);
-      HRESULT (WINAPI *put_Root)(IShellNameSpace *This,VARIANT var);
-      HRESULT (WINAPI *get_Depth)(IShellNameSpace *This,int *piDepth);
-      HRESULT (WINAPI *put_Depth)(IShellNameSpace *This,int iDepth);
-      HRESULT (WINAPI *get_Mode)(IShellNameSpace *This,UINT *puMode);
-      HRESULT (WINAPI *put_Mode)(IShellNameSpace *This,UINT uMode);
-      HRESULT (WINAPI *get_Flags)(IShellNameSpace *This,DWORD *pdwFlags);
-      HRESULT (WINAPI *put_Flags)(IShellNameSpace *This,DWORD dwFlags);
-      HRESULT (WINAPI *put_TVFlags)(IShellNameSpace *This,DWORD dwFlags);
-      HRESULT (WINAPI *get_TVFlags)(IShellNameSpace *This,DWORD *dwFlags);
-      HRESULT (WINAPI *get_Columns)(IShellNameSpace *This,BSTR *bstrColumns);
-      HRESULT (WINAPI *put_Columns)(IShellNameSpace *This,BSTR bstrColumns);
-      HRESULT (WINAPI *get_CountViewTypes)(IShellNameSpace *This,int *piTypes);
-      HRESULT (WINAPI *SetViewType)(IShellNameSpace *This,int iType);
-      HRESULT (WINAPI *SelectedItems)(IShellNameSpace *This,IDispatch **ppid);
-      HRESULT (WINAPI *Expand)(IShellNameSpace *This,VARIANT var,int iDepth);
-      HRESULT (WINAPI *UnselectAll)(IShellNameSpace *This);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellNameSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellNameSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellNameSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IShellNameSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IShellNameSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IShellNameSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IShellNameSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IShellFavoritesNameSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionUp)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionDown)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *ResetSort)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *NewFolder)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Synchronize)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Import)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *Export)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *InvokeContextMenuCommand)(
+        IShellNameSpace* This,
+        BSTR strCommand);
+
+    HRESULT (STDMETHODCALLTYPE *MoveSelectionTo)(
+        IShellNameSpace* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_SubscriptionsEnabled)(
+        IShellNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSubscriptionForSelection)(
+        IShellNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteSubscriptionForSelection)(
+        IShellNameSpace* This,
+        VARIANT_BOOL *pBool);
+
+    HRESULT (STDMETHODCALLTYPE *SetRoot)(
+        IShellNameSpace* This,
+        BSTR bstrFullPath);
+
+    /*** IShellNameSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_EnumOptions)(
+        IShellNameSpace* This,
+        LONG *pgrfEnumFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_EnumOptions)(
+        IShellNameSpace* This,
+        LONG pgrfEnumFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_SelectedItem)(
+        IShellNameSpace* This,
+        IDispatch **pItem);
+
+    HRESULT (STDMETHODCALLTYPE *put_SelectedItem)(
+        IShellNameSpace* This,
+        IDispatch *pItem);
+
+    HRESULT (STDMETHODCALLTYPE *get_Root)(
+        IShellNameSpace* This,
+        VARIANT *pvar);
+
+    HRESULT (STDMETHODCALLTYPE *put_Root)(
+        IShellNameSpace* This,
+        VARIANT pvar);
+
+    HRESULT (STDMETHODCALLTYPE *get_Depth)(
+        IShellNameSpace* This,
+        int *piDepth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Depth)(
+        IShellNameSpace* This,
+        int piDepth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Mode)(
+        IShellNameSpace* This,
+        unsigned int *puMode);
+
+    HRESULT (STDMETHODCALLTYPE *put_Mode)(
+        IShellNameSpace* This,
+        unsigned int puMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_Flags)(
+        IShellNameSpace* This,
+        ULONG *pdwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_Flags)(
+        IShellNameSpace* This,
+        ULONG pdwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_TVFlags)(
+        IShellNameSpace* This,
+        ULONG dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_TVFlags)(
+        IShellNameSpace* This,
+        ULONG *dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Columns)(
+        IShellNameSpace* This,
+        BSTR *bstrColumns);
+
+    HRESULT (STDMETHODCALLTYPE *put_Columns)(
+        IShellNameSpace* This,
+        BSTR bstrColumns);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountViewTypes)(
+        IShellNameSpace* This,
+        int *piTypes);
+
+    HRESULT (STDMETHODCALLTYPE *SetViewType)(
+        IShellNameSpace* This,
+        int iType);
+
+    HRESULT (STDMETHODCALLTYPE *SelectedItems)(
+        IShellNameSpace* This,
+        IDispatch **ppid);
+
+    HRESULT (STDMETHODCALLTYPE *Expand)(
+        IShellNameSpace* This,
+        VARIANT var,
+        int iDepth);
+
+    HRESULT (STDMETHODCALLTYPE *UnselectAll)(
+        IShellNameSpace* This);
+
     END_INTERFACE
-  } IShellNameSpaceVtbl;
-  struct IShellNameSpace {
-    CONST_VTBL struct IShellNameSpaceVtbl *lpVtbl;
-  };
+} IShellNameSpaceVtbl;
+interface IShellNameSpace {
+    CONST_VTBL IShellNameSpaceVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IShellNameSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IShellNameSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IShellNameSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IShellNameSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IShellNameSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IShellNameSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IShellNameSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IShellFavoritesNameSpace methods ***/
 #define IShellNameSpace_MoveSelectionUp(This) (This)->lpVtbl->MoveSelectionUp(This)
 #define IShellNameSpace_MoveSelectionDown(This) (This)->lpVtbl->MoveSelectionDown(This)
 #define IShellNameSpace_ResetSort(This) (This)->lpVtbl->ResetSort(This)
@@ -1339,18 +4872,19 @@
 #define IShellNameSpace_CreateSubscriptionForSelection(This,pBool) (This)->lpVtbl->CreateSubscriptionForSelection(This,pBool)
 #define IShellNameSpace_DeleteSubscriptionForSelection(This,pBool) (This)->lpVtbl->DeleteSubscriptionForSelection(This,pBool)
 #define IShellNameSpace_SetRoot(This,bstrFullPath) (This)->lpVtbl->SetRoot(This,bstrFullPath)
+/*** IShellNameSpace methods ***/
 #define IShellNameSpace_get_EnumOptions(This,pgrfEnumFlags) (This)->lpVtbl->get_EnumOptions(This,pgrfEnumFlags)
-#define IShellNameSpace_put_EnumOptions(This,lVal) (This)->lpVtbl->put_EnumOptions(This,lVal)
+#define IShellNameSpace_put_EnumOptions(This,pgrfEnumFlags) (This)->lpVtbl->put_EnumOptions(This,pgrfEnumFlags)
 #define IShellNameSpace_get_SelectedItem(This,pItem) (This)->lpVtbl->get_SelectedItem(This,pItem)
 #define IShellNameSpace_put_SelectedItem(This,pItem) (This)->lpVtbl->put_SelectedItem(This,pItem)
 #define IShellNameSpace_get_Root(This,pvar) (This)->lpVtbl->get_Root(This,pvar)
-#define IShellNameSpace_put_Root(This,var) (This)->lpVtbl->put_Root(This,var)
+#define IShellNameSpace_put_Root(This,pvar) (This)->lpVtbl->put_Root(This,pvar)
 #define IShellNameSpace_get_Depth(This,piDepth) (This)->lpVtbl->get_Depth(This,piDepth)
-#define IShellNameSpace_put_Depth(This,iDepth) (This)->lpVtbl->put_Depth(This,iDepth)
+#define IShellNameSpace_put_Depth(This,piDepth) (This)->lpVtbl->put_Depth(This,piDepth)
 #define IShellNameSpace_get_Mode(This,puMode) (This)->lpVtbl->get_Mode(This,puMode)
-#define IShellNameSpace_put_Mode(This,uMode) (This)->lpVtbl->put_Mode(This,uMode)
+#define IShellNameSpace_put_Mode(This,puMode) (This)->lpVtbl->put_Mode(This,puMode)
 #define IShellNameSpace_get_Flags(This,pdwFlags) (This)->lpVtbl->get_Flags(This,pdwFlags)
-#define IShellNameSpace_put_Flags(This,dwFlags) (This)->lpVtbl->put_Flags(This,dwFlags)
+#define IShellNameSpace_put_Flags(This,pdwFlags) (This)->lpVtbl->put_Flags(This,pdwFlags)
 #define IShellNameSpace_put_TVFlags(This,dwFlags) (This)->lpVtbl->put_TVFlags(This,dwFlags)
 #define IShellNameSpace_get_TVFlags(This,dwFlags) (This)->lpVtbl->get_TVFlags(This,dwFlags)
 #define IShellNameSpace_get_Columns(This,bstrColumns) (This)->lpVtbl->get_Columns(This,bstrColumns)
@@ -1360,115 +4894,512 @@
 #define IShellNameSpace_SelectedItems(This,ppid) (This)->lpVtbl->SelectedItems(This,ppid)
 #define IShellNameSpace_Expand(This,var,iDepth) (This)->lpVtbl->Expand(This,var,iDepth)
 #define IShellNameSpace_UnselectAll(This) (This)->lpVtbl->UnselectAll(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellNameSpace_QueryInterface(IShellNameSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellNameSpace_AddRef(IShellNameSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellNameSpace_Release(IShellNameSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IShellNameSpace_GetTypeInfoCount(IShellNameSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IShellNameSpace_GetTypeInfo(IShellNameSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IShellNameSpace_GetIDsOfNames(IShellNameSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IShellNameSpace_Invoke(IShellNameSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IShellFavoritesNameSpace methods ***/
+static FORCEINLINE HRESULT IShellNameSpace_MoveSelectionUp(IShellNameSpace* This) {
+    return This->lpVtbl->MoveSelectionUp(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_MoveSelectionDown(IShellNameSpace* This) {
+    return This->lpVtbl->MoveSelectionDown(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_ResetSort(IShellNameSpace* This) {
+    return This->lpVtbl->ResetSort(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_NewFolder(IShellNameSpace* This) {
+    return This->lpVtbl->NewFolder(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_Synchronize(IShellNameSpace* This) {
+    return This->lpVtbl->Synchronize(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_Import(IShellNameSpace* This) {
+    return This->lpVtbl->Import(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_Export(IShellNameSpace* This) {
+    return This->lpVtbl->Export(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_InvokeContextMenuCommand(IShellNameSpace* This,BSTR strCommand) {
+    return This->lpVtbl->InvokeContextMenuCommand(This,strCommand);
+}
+static FORCEINLINE HRESULT IShellNameSpace_MoveSelectionTo(IShellNameSpace* This) {
+    return This->lpVtbl->MoveSelectionTo(This);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_SubscriptionsEnabled(IShellNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->get_SubscriptionsEnabled(This,pBool);
+}
+static FORCEINLINE HRESULT IShellNameSpace_CreateSubscriptionForSelection(IShellNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->CreateSubscriptionForSelection(This,pBool);
+}
+static FORCEINLINE HRESULT IShellNameSpace_DeleteSubscriptionForSelection(IShellNameSpace* This,VARIANT_BOOL *pBool) {
+    return This->lpVtbl->DeleteSubscriptionForSelection(This,pBool);
+}
+static FORCEINLINE HRESULT IShellNameSpace_SetRoot(IShellNameSpace* This,BSTR bstrFullPath) {
+    return This->lpVtbl->SetRoot(This,bstrFullPath);
+}
+/*** IShellNameSpace methods ***/
+static FORCEINLINE HRESULT IShellNameSpace_get_EnumOptions(IShellNameSpace* This,LONG *pgrfEnumFlags) {
+    return This->lpVtbl->get_EnumOptions(This,pgrfEnumFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_EnumOptions(IShellNameSpace* This,LONG pgrfEnumFlags) {
+    return This->lpVtbl->put_EnumOptions(This,pgrfEnumFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_SelectedItem(IShellNameSpace* This,IDispatch **pItem) {
+    return This->lpVtbl->get_SelectedItem(This,pItem);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_SelectedItem(IShellNameSpace* This,IDispatch *pItem) {
+    return This->lpVtbl->put_SelectedItem(This,pItem);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_Root(IShellNameSpace* This,VARIANT *pvar) {
+    return This->lpVtbl->get_Root(This,pvar);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_Root(IShellNameSpace* This,VARIANT pvar) {
+    return This->lpVtbl->put_Root(This,pvar);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_Depth(IShellNameSpace* This,int *piDepth) {
+    return This->lpVtbl->get_Depth(This,piDepth);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_Depth(IShellNameSpace* This,int piDepth) {
+    return This->lpVtbl->put_Depth(This,piDepth);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_Mode(IShellNameSpace* This,unsigned int *puMode) {
+    return This->lpVtbl->get_Mode(This,puMode);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_Mode(IShellNameSpace* This,unsigned int puMode) {
+    return This->lpVtbl->put_Mode(This,puMode);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_Flags(IShellNameSpace* This,ULONG *pdwFlags) {
+    return This->lpVtbl->get_Flags(This,pdwFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_Flags(IShellNameSpace* This,ULONG pdwFlags) {
+    return This->lpVtbl->put_Flags(This,pdwFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_TVFlags(IShellNameSpace* This,ULONG dwFlags) {
+    return This->lpVtbl->put_TVFlags(This,dwFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_TVFlags(IShellNameSpace* This,ULONG *dwFlags) {
+    return This->lpVtbl->get_TVFlags(This,dwFlags);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_Columns(IShellNameSpace* This,BSTR *bstrColumns) {
+    return This->lpVtbl->get_Columns(This,bstrColumns);
+}
+static FORCEINLINE HRESULT IShellNameSpace_put_Columns(IShellNameSpace* This,BSTR bstrColumns) {
+    return This->lpVtbl->put_Columns(This,bstrColumns);
+}
+static FORCEINLINE HRESULT IShellNameSpace_get_CountViewTypes(IShellNameSpace* This,int *piTypes) {
+    return This->lpVtbl->get_CountViewTypes(This,piTypes);
+}
+static FORCEINLINE HRESULT IShellNameSpace_SetViewType(IShellNameSpace* This,int iType) {
+    return This->lpVtbl->SetViewType(This,iType);
+}
+static FORCEINLINE HRESULT IShellNameSpace_SelectedItems(IShellNameSpace* This,IDispatch **ppid) {
+    return This->lpVtbl->SelectedItems(This,ppid);
+}
+static FORCEINLINE HRESULT IShellNameSpace_Expand(IShellNameSpace* This,VARIANT var,int iDepth) {
+    return This->lpVtbl->Expand(This,var,iDepth);
+}
+static FORCEINLINE HRESULT IShellNameSpace_UnselectAll(IShellNameSpace* This) {
+    return This->lpVtbl->UnselectAll(This);
+}
 #endif
 #endif
-  HRESULT WINAPI IShellNameSpace_get_EnumOptions_Proxy(IShellNameSpace *This,LONG *pgrfEnumFlags);
-  void __RPC_STUB IShellNameSpace_get_EnumOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_EnumOptions_Proxy(IShellNameSpace *This,LONG lVal);
-  void __RPC_STUB IShellNameSpace_put_EnumOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_SelectedItem_Proxy(IShellNameSpace *This,IDispatch **pItem);
-  void __RPC_STUB IShellNameSpace_get_SelectedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_SelectedItem_Proxy(IShellNameSpace *This,IDispatch *pItem);
-  void __RPC_STUB IShellNameSpace_put_SelectedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_Root_Proxy(IShellNameSpace *This,VARIANT *pvar);
-  void __RPC_STUB IShellNameSpace_get_Root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_Root_Proxy(IShellNameSpace *This,VARIANT var);
-  void __RPC_STUB IShellNameSpace_put_Root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_Depth_Proxy(IShellNameSpace *This,int *piDepth);
-  void __RPC_STUB IShellNameSpace_get_Depth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_Depth_Proxy(IShellNameSpace *This,int iDepth);
-  void __RPC_STUB IShellNameSpace_put_Depth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_Mode_Proxy(IShellNameSpace *This,UINT *puMode);
-  void __RPC_STUB IShellNameSpace_get_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_Mode_Proxy(IShellNameSpace *This,UINT uMode);
-  void __RPC_STUB IShellNameSpace_put_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_Flags_Proxy(IShellNameSpace *This,DWORD *pdwFlags);
-  void __RPC_STUB IShellNameSpace_get_Flags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_Flags_Proxy(IShellNameSpace *This,DWORD dwFlags);
-  void __RPC_STUB IShellNameSpace_put_Flags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_TVFlags_Proxy(IShellNameSpace *This,DWORD dwFlags);
-  void __RPC_STUB IShellNameSpace_put_TVFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_TVFlags_Proxy(IShellNameSpace *This,DWORD *dwFlags);
-  void __RPC_STUB IShellNameSpace_get_TVFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_Columns_Proxy(IShellNameSpace *This,BSTR *bstrColumns);
-  void __RPC_STUB IShellNameSpace_get_Columns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_put_Columns_Proxy(IShellNameSpace *This,BSTR bstrColumns);
-  void __RPC_STUB IShellNameSpace_put_Columns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_get_CountViewTypes_Proxy(IShellNameSpace *This,int *piTypes);
-  void __RPC_STUB IShellNameSpace_get_CountViewTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_SetViewType_Proxy(IShellNameSpace *This,int iType);
-  void __RPC_STUB IShellNameSpace_SetViewType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_SelectedItems_Proxy(IShellNameSpace *This,IDispatch **ppid);
-  void __RPC_STUB IShellNameSpace_SelectedItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_Expand_Proxy(IShellNameSpace *This,VARIANT var,int iDepth);
-  void __RPC_STUB IShellNameSpace_Expand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IShellNameSpace_UnselectAll_Proxy(IShellNameSpace *This);
-  void __RPC_STUB IShellNameSpace_UnselectAll_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
-  EXTERN_C const CLSID CLSID_ShellNameSpace;
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_EnumOptions_Proxy(
+    IShellNameSpace* This,
+    LONG *pgrfEnumFlags);
+void __RPC_STUB IShellNameSpace_get_EnumOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_EnumOptions_Proxy(
+    IShellNameSpace* This,
+    LONG pgrfEnumFlags);
+void __RPC_STUB IShellNameSpace_put_EnumOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_SelectedItem_Proxy(
+    IShellNameSpace* This,
+    IDispatch **pItem);
+void __RPC_STUB IShellNameSpace_get_SelectedItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_SelectedItem_Proxy(
+    IShellNameSpace* This,
+    IDispatch *pItem);
+void __RPC_STUB IShellNameSpace_put_SelectedItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_Root_Proxy(
+    IShellNameSpace* This,
+    VARIANT *pvar);
+void __RPC_STUB IShellNameSpace_get_Root_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_Root_Proxy(
+    IShellNameSpace* This,
+    VARIANT pvar);
+void __RPC_STUB IShellNameSpace_put_Root_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_Depth_Proxy(
+    IShellNameSpace* This,
+    int *piDepth);
+void __RPC_STUB IShellNameSpace_get_Depth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_Depth_Proxy(
+    IShellNameSpace* This,
+    int piDepth);
+void __RPC_STUB IShellNameSpace_put_Depth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_Mode_Proxy(
+    IShellNameSpace* This,
+    unsigned int *puMode);
+void __RPC_STUB IShellNameSpace_get_Mode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_Mode_Proxy(
+    IShellNameSpace* This,
+    unsigned int puMode);
+void __RPC_STUB IShellNameSpace_put_Mode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_Flags_Proxy(
+    IShellNameSpace* This,
+    ULONG *pdwFlags);
+void __RPC_STUB IShellNameSpace_get_Flags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_Flags_Proxy(
+    IShellNameSpace* This,
+    ULONG pdwFlags);
+void __RPC_STUB IShellNameSpace_put_Flags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_TVFlags_Proxy(
+    IShellNameSpace* This,
+    ULONG dwFlags);
+void __RPC_STUB IShellNameSpace_put_TVFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_TVFlags_Proxy(
+    IShellNameSpace* This,
+    ULONG *dwFlags);
+void __RPC_STUB IShellNameSpace_get_TVFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_Columns_Proxy(
+    IShellNameSpace* This,
+    BSTR *bstrColumns);
+void __RPC_STUB IShellNameSpace_get_Columns_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_put_Columns_Proxy(
+    IShellNameSpace* This,
+    BSTR bstrColumns);
+void __RPC_STUB IShellNameSpace_put_Columns_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_get_CountViewTypes_Proxy(
+    IShellNameSpace* This,
+    int *piTypes);
+void __RPC_STUB IShellNameSpace_get_CountViewTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_SetViewType_Proxy(
+    IShellNameSpace* This,
+    int iType);
+void __RPC_STUB IShellNameSpace_SetViewType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_SelectedItems_Proxy(
+    IShellNameSpace* This,
+    IDispatch **ppid);
+void __RPC_STUB IShellNameSpace_SelectedItems_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_Expand_Proxy(
+    IShellNameSpace* This,
+    VARIANT var,
+    int iDepth);
+void __RPC_STUB IShellNameSpace_Expand_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellNameSpace_UnselectAll_Proxy(
+    IShellNameSpace* This);
+void __RPC_STUB IShellNameSpace_UnselectAll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellNameSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ShellShellNameSpace coclass
+ */
+
+DEFINE_GUID(CLSID_ShellShellNameSpace, 0x2f2f1f96, 0x2bc1, 0x4b1c, 0xbe,0x28, 0xea,0x37,0x74,0xf4,0x67,0x6a);
+
 #ifdef __cplusplus
-  class ShellNameSpace;
+class DECLSPEC_UUID("2f2f1f96-2bc1-4b1c-be28-ea3774f4676a") ShellShellNameSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellShellNameSpace, 0x2f2f1f96, 0x2bc1, 0x4b1c, 0xbe,0x28, 0xea,0x37,0x74,0xf4,0x67,0x6a)
+#endif
 #endif
 
+/*****************************************************************************
+ * ShellNameSpace coclass
+ */
+
+DEFINE_GUID(CLSID_ShellNameSpace, 0x55136805, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("55136805-b2de-11d1-b9f2-00a0c98bc547") ShellNameSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellNameSpace, 0x55136805, 0xb2de, 0x11d1, 0xb9,0xf2, 0x00,0xa0,0xc9,0x8b,0xc5,0x47)
+#endif
+#endif
+
+/*****************************************************************************
+ * IScriptErrorList interface
+ */
 #ifndef __IScriptErrorList_INTERFACE_DEFINED__
 #define __IScriptErrorList_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IScriptErrorList;
+
+DEFINE_GUID(IID_IScriptErrorList, 0xf3470f24, 0x15fd, 0x11d2, 0xbb,0x2e, 0x00,0x80,0x5f,0xf7,0xef,0xca);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IScriptErrorList : public IDispatch {
-  public:
-    virtual HRESULT WINAPI advanceError(void) = 0;
-    virtual HRESULT WINAPI retreatError(void) = 0;
-    virtual HRESULT WINAPI canAdvanceError(WINBOOL *pfCanAdvance) = 0;
-    virtual HRESULT WINAPI canRetreatError(WINBOOL *pfCanRetreat) = 0;
-    virtual HRESULT WINAPI getErrorLine(LONG *plLine) = 0;
-    virtual HRESULT WINAPI getErrorChar(LONG *plChar) = 0;
-    virtual HRESULT WINAPI getErrorCode(LONG *plCode) = 0;
-    virtual HRESULT WINAPI getErrorMsg(BSTR *pstr) = 0;
-    virtual HRESULT WINAPI getErrorUrl(BSTR *pstr) = 0;
-    virtual HRESULT WINAPI getAlwaysShowLockState(WINBOOL *pfAlwaysShowLocked) = 0;
-    virtual HRESULT WINAPI getDetailsPaneOpen(WINBOOL *pfDetailsPaneOpen) = 0;
-    virtual HRESULT WINAPI setDetailsPaneOpen(WINBOOL fDetailsPaneOpen) = 0;
-    virtual HRESULT WINAPI getPerErrorDisplay(WINBOOL *pfPerErrorDisplay) = 0;
-    virtual HRESULT WINAPI setPerErrorDisplay(WINBOOL fPerErrorDisplay) = 0;
-  };
+MIDL_INTERFACE("f3470f24-15fd-11d2-bb2e-00805ff7efca")
+IScriptErrorList : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE advanceError(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE retreatError(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE canAdvanceError(
+        LONG *pfCanAdvance) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE canRetreatError(
+        LONG *pfCanRetreat) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getErrorLine(
+        LONG *plLine) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getErrorChar(
+        LONG *plChar) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getErrorCode(
+        LONG *plCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getErrorMsg(
+        BSTR *pstr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getErrorUrl(
+        BSTR *pstr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAlwaysShowLockState(
+        LONG *pfAlwaysShowLocked) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getDetailsPaneOpen(
+        LONG *pfDetailsPaneOpen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setDetailsPaneOpen(
+        LONG fDetailsPaneOpen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getPerErrorDisplay(
+        LONG *pfPerErrorDisplay) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setPerErrorDisplay(
+        LONG fPerErrorDisplay) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IScriptErrorList, 0xf3470f24, 0x15fd, 0x11d2, 0xbb,0x2e, 0x00,0x80,0x5f,0xf7,0xef,0xca)
+#endif
 #else
-  typedef struct IScriptErrorListVtbl {
+typedef struct IScriptErrorListVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IScriptErrorList *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IScriptErrorList *This);
-      ULONG (WINAPI *Release)(IScriptErrorList *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(IScriptErrorList *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(IScriptErrorList *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(IScriptErrorList *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(IScriptErrorList *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *advanceError)(IScriptErrorList *This);
-      HRESULT (WINAPI *retreatError)(IScriptErrorList *This);
-      HRESULT (WINAPI *canAdvanceError)(IScriptErrorList *This,WINBOOL *pfCanAdvance);
-      HRESULT (WINAPI *canRetreatError)(IScriptErrorList *This,WINBOOL *pfCanRetreat);
-      HRESULT (WINAPI *getErrorLine)(IScriptErrorList *This,LONG *plLine);
-      HRESULT (WINAPI *getErrorChar)(IScriptErrorList *This,LONG *plChar);
-      HRESULT (WINAPI *getErrorCode)(IScriptErrorList *This,LONG *plCode);
-      HRESULT (WINAPI *getErrorMsg)(IScriptErrorList *This,BSTR *pstr);
-      HRESULT (WINAPI *getErrorUrl)(IScriptErrorList *This,BSTR *pstr);
-      HRESULT (WINAPI *getAlwaysShowLockState)(IScriptErrorList *This,WINBOOL *pfAlwaysShowLocked);
-      HRESULT (WINAPI *getDetailsPaneOpen)(IScriptErrorList *This,WINBOOL *pfDetailsPaneOpen);
-      HRESULT (WINAPI *setDetailsPaneOpen)(IScriptErrorList *This,WINBOOL fDetailsPaneOpen);
-      HRESULT (WINAPI *getPerErrorDisplay)(IScriptErrorList *This,WINBOOL *pfPerErrorDisplay);
-      HRESULT (WINAPI *setPerErrorDisplay)(IScriptErrorList *This,WINBOOL fPerErrorDisplay);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IScriptErrorList* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IScriptErrorList* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IScriptErrorList* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IScriptErrorList* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IScriptErrorList* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IScriptErrorList* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IScriptErrorList* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IScriptErrorList methods ***/
+    HRESULT (STDMETHODCALLTYPE *advanceError)(
+        IScriptErrorList* This);
+
+    HRESULT (STDMETHODCALLTYPE *retreatError)(
+        IScriptErrorList* This);
+
+    HRESULT (STDMETHODCALLTYPE *canAdvanceError)(
+        IScriptErrorList* This,
+        LONG *pfCanAdvance);
+
+    HRESULT (STDMETHODCALLTYPE *canRetreatError)(
+        IScriptErrorList* This,
+        LONG *pfCanRetreat);
+
+    HRESULT (STDMETHODCALLTYPE *getErrorLine)(
+        IScriptErrorList* This,
+        LONG *plLine);
+
+    HRESULT (STDMETHODCALLTYPE *getErrorChar)(
+        IScriptErrorList* This,
+        LONG *plChar);
+
+    HRESULT (STDMETHODCALLTYPE *getErrorCode)(
+        IScriptErrorList* This,
+        LONG *plCode);
+
+    HRESULT (STDMETHODCALLTYPE *getErrorMsg)(
+        IScriptErrorList* This,
+        BSTR *pstr);
+
+    HRESULT (STDMETHODCALLTYPE *getErrorUrl)(
+        IScriptErrorList* This,
+        BSTR *pstr);
+
+    HRESULT (STDMETHODCALLTYPE *getAlwaysShowLockState)(
+        IScriptErrorList* This,
+        LONG *pfAlwaysShowLocked);
+
+    HRESULT (STDMETHODCALLTYPE *getDetailsPaneOpen)(
+        IScriptErrorList* This,
+        LONG *pfDetailsPaneOpen);
+
+    HRESULT (STDMETHODCALLTYPE *setDetailsPaneOpen)(
+        IScriptErrorList* This,
+        LONG fDetailsPaneOpen);
+
+    HRESULT (STDMETHODCALLTYPE *getPerErrorDisplay)(
+        IScriptErrorList* This,
+        LONG *pfPerErrorDisplay);
+
+    HRESULT (STDMETHODCALLTYPE *setPerErrorDisplay)(
+        IScriptErrorList* This,
+        LONG fPerErrorDisplay);
+
     END_INTERFACE
-  } IScriptErrorListVtbl;
-  struct IScriptErrorList {
-    CONST_VTBL struct IScriptErrorListVtbl *lpVtbl;
-  };
+} IScriptErrorListVtbl;
+interface IScriptErrorList {
+    CONST_VTBL IScriptErrorListVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IScriptErrorList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IScriptErrorList_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IScriptErrorList_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IScriptErrorList_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IScriptErrorList_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IScriptErrorList_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IScriptErrorList_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IScriptErrorList methods ***/
 #define IScriptErrorList_advanceError(This) (This)->lpVtbl->advanceError(This)
 #define IScriptErrorList_retreatError(This) (This)->lpVtbl->retreatError(This)
 #define IScriptErrorList_canAdvanceError(This,pfCanAdvance) (This)->lpVtbl->canAdvanceError(This,pfCanAdvance)
@@ -1483,230 +5414,848 @@
 #define IScriptErrorList_setDetailsPaneOpen(This,fDetailsPaneOpen) (This)->lpVtbl->setDetailsPaneOpen(This,fDetailsPaneOpen)
 #define IScriptErrorList_getPerErrorDisplay(This,pfPerErrorDisplay) (This)->lpVtbl->getPerErrorDisplay(This,pfPerErrorDisplay)
 #define IScriptErrorList_setPerErrorDisplay(This,fPerErrorDisplay) (This)->lpVtbl->setPerErrorDisplay(This,fPerErrorDisplay)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IScriptErrorList_QueryInterface(IScriptErrorList* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IScriptErrorList_AddRef(IScriptErrorList* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IScriptErrorList_Release(IScriptErrorList* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IScriptErrorList_GetTypeInfoCount(IScriptErrorList* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IScriptErrorList_GetTypeInfo(IScriptErrorList* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IScriptErrorList_GetIDsOfNames(IScriptErrorList* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IScriptErrorList_Invoke(IScriptErrorList* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IScriptErrorList methods ***/
+static FORCEINLINE HRESULT IScriptErrorList_advanceError(IScriptErrorList* This) {
+    return This->lpVtbl->advanceError(This);
+}
+static FORCEINLINE HRESULT IScriptErrorList_retreatError(IScriptErrorList* This) {
+    return This->lpVtbl->retreatError(This);
+}
+static FORCEINLINE HRESULT IScriptErrorList_canAdvanceError(IScriptErrorList* This,LONG *pfCanAdvance) {
+    return This->lpVtbl->canAdvanceError(This,pfCanAdvance);
+}
+static FORCEINLINE HRESULT IScriptErrorList_canRetreatError(IScriptErrorList* This,LONG *pfCanRetreat) {
+    return This->lpVtbl->canRetreatError(This,pfCanRetreat);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getErrorLine(IScriptErrorList* This,LONG *plLine) {
+    return This->lpVtbl->getErrorLine(This,plLine);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getErrorChar(IScriptErrorList* This,LONG *plChar) {
+    return This->lpVtbl->getErrorChar(This,plChar);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getErrorCode(IScriptErrorList* This,LONG *plCode) {
+    return This->lpVtbl->getErrorCode(This,plCode);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getErrorMsg(IScriptErrorList* This,BSTR *pstr) {
+    return This->lpVtbl->getErrorMsg(This,pstr);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getErrorUrl(IScriptErrorList* This,BSTR *pstr) {
+    return This->lpVtbl->getErrorUrl(This,pstr);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getAlwaysShowLockState(IScriptErrorList* This,LONG *pfAlwaysShowLocked) {
+    return This->lpVtbl->getAlwaysShowLockState(This,pfAlwaysShowLocked);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getDetailsPaneOpen(IScriptErrorList* This,LONG *pfDetailsPaneOpen) {
+    return This->lpVtbl->getDetailsPaneOpen(This,pfDetailsPaneOpen);
+}
+static FORCEINLINE HRESULT IScriptErrorList_setDetailsPaneOpen(IScriptErrorList* This,LONG fDetailsPaneOpen) {
+    return This->lpVtbl->setDetailsPaneOpen(This,fDetailsPaneOpen);
+}
+static FORCEINLINE HRESULT IScriptErrorList_getPerErrorDisplay(IScriptErrorList* This,LONG *pfPerErrorDisplay) {
+    return This->lpVtbl->getPerErrorDisplay(This,pfPerErrorDisplay);
+}
+static FORCEINLINE HRESULT IScriptErrorList_setPerErrorDisplay(IScriptErrorList* This,LONG fPerErrorDisplay) {
+    return This->lpVtbl->setPerErrorDisplay(This,fPerErrorDisplay);
+}
 #endif
 #endif
-  HRESULT WINAPI IScriptErrorList_advanceError_Proxy(IScriptErrorList *This);
-  void __RPC_STUB IScriptErrorList_advanceError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_retreatError_Proxy(IScriptErrorList *This);
-  void __RPC_STUB IScriptErrorList_retreatError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_canAdvanceError_Proxy(IScriptErrorList *This,WINBOOL *pfCanAdvance);
-  void __RPC_STUB IScriptErrorList_canAdvanceError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_canRetreatError_Proxy(IScriptErrorList *This,WINBOOL *pfCanRetreat);
-  void __RPC_STUB IScriptErrorList_canRetreatError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getErrorLine_Proxy(IScriptErrorList *This,LONG *plLine);
-  void __RPC_STUB IScriptErrorList_getErrorLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getErrorChar_Proxy(IScriptErrorList *This,LONG *plChar);
-  void __RPC_STUB IScriptErrorList_getErrorChar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getErrorCode_Proxy(IScriptErrorList *This,LONG *plCode);
-  void __RPC_STUB IScriptErrorList_getErrorCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getErrorMsg_Proxy(IScriptErrorList *This,BSTR *pstr);
-  void __RPC_STUB IScriptErrorList_getErrorMsg_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getErrorUrl_Proxy(IScriptErrorList *This,BSTR *pstr);
-  void __RPC_STUB IScriptErrorList_getErrorUrl_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getAlwaysShowLockState_Proxy(IScriptErrorList *This,WINBOOL *pfAlwaysShowLocked);
-  void __RPC_STUB IScriptErrorList_getAlwaysShowLockState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getDetailsPaneOpen_Proxy(IScriptErrorList *This,WINBOOL *pfDetailsPaneOpen);
-  void __RPC_STUB IScriptErrorList_getDetailsPaneOpen_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_setDetailsPaneOpen_Proxy(IScriptErrorList *This,WINBOOL fDetailsPaneOpen);
-  void __RPC_STUB IScriptErrorList_setDetailsPaneOpen_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_getPerErrorDisplay_Proxy(IScriptErrorList *This,WINBOOL *pfPerErrorDisplay);
-  void __RPC_STUB IScriptErrorList_getPerErrorDisplay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IScriptErrorList_setPerErrorDisplay_Proxy(IScriptErrorList *This,WINBOOL fPerErrorDisplay);
-  void __RPC_STUB IScriptErrorList_setPerErrorDisplay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
-  EXTERN_C const CLSID CLSID_CScriptErrorList;
+#endif
+
+HRESULT STDMETHODCALLTYPE IScriptErrorList_advanceError_Proxy(
+    IScriptErrorList* This);
+void __RPC_STUB IScriptErrorList_advanceError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_retreatError_Proxy(
+    IScriptErrorList* This);
+void __RPC_STUB IScriptErrorList_retreatError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_canAdvanceError_Proxy(
+    IScriptErrorList* This,
+    LONG *pfCanAdvance);
+void __RPC_STUB IScriptErrorList_canAdvanceError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_canRetreatError_Proxy(
+    IScriptErrorList* This,
+    LONG *pfCanRetreat);
+void __RPC_STUB IScriptErrorList_canRetreatError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getErrorLine_Proxy(
+    IScriptErrorList* This,
+    LONG *plLine);
+void __RPC_STUB IScriptErrorList_getErrorLine_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getErrorChar_Proxy(
+    IScriptErrorList* This,
+    LONG *plChar);
+void __RPC_STUB IScriptErrorList_getErrorChar_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getErrorCode_Proxy(
+    IScriptErrorList* This,
+    LONG *plCode);
+void __RPC_STUB IScriptErrorList_getErrorCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getErrorMsg_Proxy(
+    IScriptErrorList* This,
+    BSTR *pstr);
+void __RPC_STUB IScriptErrorList_getErrorMsg_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getErrorUrl_Proxy(
+    IScriptErrorList* This,
+    BSTR *pstr);
+void __RPC_STUB IScriptErrorList_getErrorUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getAlwaysShowLockState_Proxy(
+    IScriptErrorList* This,
+    LONG *pfAlwaysShowLocked);
+void __RPC_STUB IScriptErrorList_getAlwaysShowLockState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getDetailsPaneOpen_Proxy(
+    IScriptErrorList* This,
+    LONG *pfDetailsPaneOpen);
+void __RPC_STUB IScriptErrorList_getDetailsPaneOpen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_setDetailsPaneOpen_Proxy(
+    IScriptErrorList* This,
+    LONG fDetailsPaneOpen);
+void __RPC_STUB IScriptErrorList_setDetailsPaneOpen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_getPerErrorDisplay_Proxy(
+    IScriptErrorList* This,
+    LONG *pfPerErrorDisplay);
+void __RPC_STUB IScriptErrorList_getPerErrorDisplay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScriptErrorList_setPerErrorDisplay_Proxy(
+    IScriptErrorList* This,
+    LONG fPerErrorDisplay);
+void __RPC_STUB IScriptErrorList_setPerErrorDisplay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IScriptErrorList_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * CScriptErrorList coclass
+ */
+
+DEFINE_GUID(CLSID_CScriptErrorList, 0xefd01300, 0x160f, 0x11d2, 0xbb,0x2e, 0x00,0x80,0x5f,0xf7,0xef,0xca);
+
 #ifdef __cplusplus
-  class CScriptErrorList;
+class DECLSPEC_UUID("efd01300-160f-11d2-bb2e-00805ff7efca") CScriptErrorList;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CScriptErrorList, 0xefd01300, 0x160f, 0x11d2, 0xbb,0x2e, 0x00,0x80,0x5f,0xf7,0xef,0xca)
+#endif
 #endif
 
+/*****************************************************************************
+ * ISearch interface
+ */
 #ifndef __ISearch_INTERFACE_DEFINED__
 #define __ISearch_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ISearch;
+
+DEFINE_GUID(IID_ISearch, 0xba9239a4, 0x3dd5, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ISearch : public IDispatch {
-  public:
-    virtual HRESULT WINAPI get_Title(BSTR *pbstrTitle) = 0;
-    virtual HRESULT WINAPI get_Id(BSTR *pbstrId) = 0;
-    virtual HRESULT WINAPI get_Url(BSTR *pbstrUrl) = 0;
-  };
+MIDL_INTERFACE("ba9239a4-3dd5-11d2-bf8b-00c04fb93661")
+ISearch : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Title(
+        BSTR *pbstrTitle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Id(
+        BSTR *pbstrId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_URL(
+        BSTR *pbstrUrl) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISearch, 0xba9239a4, 0x3dd5, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61)
+#endif
 #else
-  typedef struct ISearchVtbl {
+typedef struct ISearchVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ISearch *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ISearch *This);
-      ULONG (WINAPI *Release)(ISearch *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ISearch *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ISearch *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ISearch *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ISearch *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *get_Title)(ISearch *This,BSTR *pbstrTitle);
-      HRESULT (WINAPI *get_Id)(ISearch *This,BSTR *pbstrId);
-      HRESULT (WINAPI *get_Url)(ISearch *This,BSTR *pbstrUrl);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISearch* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISearch* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISearch* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ISearch* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ISearch* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ISearch* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ISearch* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ISearch methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Title)(
+        ISearch* This,
+        BSTR *pbstrTitle);
+
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        ISearch* This,
+        BSTR *pbstrId);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        ISearch* This,
+        BSTR *pbstrUrl);
+
     END_INTERFACE
-  } ISearchVtbl;
-  struct ISearch {
-    CONST_VTBL struct ISearchVtbl *lpVtbl;
-  };
+} ISearchVtbl;
+interface ISearch {
+    CONST_VTBL ISearchVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ISearch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ISearch_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ISearch_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ISearch_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ISearch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ISearch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ISearch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ISearch methods ***/
 #define ISearch_get_Title(This,pbstrTitle) (This)->lpVtbl->get_Title(This,pbstrTitle)
 #define ISearch_get_Id(This,pbstrId) (This)->lpVtbl->get_Id(This,pbstrId)
-#define ISearch_get_Url(This,pbstrUrl) (This)->lpVtbl->get_Url(This,pbstrUrl)
+#define ISearch_get_URL(This,pbstrUrl) (This)->lpVtbl->get_URL(This,pbstrUrl)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ISearch_QueryInterface(ISearch* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ISearch_AddRef(ISearch* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ISearch_Release(ISearch* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ISearch_GetTypeInfoCount(ISearch* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ISearch_GetTypeInfo(ISearch* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ISearch_GetIDsOfNames(ISearch* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ISearch_Invoke(ISearch* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ISearch methods ***/
+static FORCEINLINE HRESULT ISearch_get_Title(ISearch* This,BSTR *pbstrTitle) {
+    return This->lpVtbl->get_Title(This,pbstrTitle);
+}
+static FORCEINLINE HRESULT ISearch_get_Id(ISearch* This,BSTR *pbstrId) {
+    return This->lpVtbl->get_Id(This,pbstrId);
+}
+static FORCEINLINE HRESULT ISearch_get_URL(ISearch* This,BSTR *pbstrUrl) {
+    return This->lpVtbl->get_URL(This,pbstrUrl);
+}
 #endif
 #endif
-  HRESULT WINAPI ISearch_get_Title_Proxy(ISearch *This,BSTR *pbstrTitle);
-  void __RPC_STUB ISearch_get_Title_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearch_get_Id_Proxy(ISearch *This,BSTR *pbstrId);
-  void __RPC_STUB ISearch_get_Id_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearch_get_Url_Proxy(ISearch *This,BSTR *pbstrUrl);
-  void __RPC_STUB ISearch_get_Url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE ISearch_get_Title_Proxy(
+    ISearch* This,
+    BSTR *pbstrTitle);
+void __RPC_STUB ISearch_get_Title_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearch_get_Id_Proxy(
+    ISearch* This,
+    BSTR *pbstrId);
+void __RPC_STUB ISearch_get_Id_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearch_get_URL_Proxy(
+    ISearch* This,
+    BSTR *pbstrUrl);
+void __RPC_STUB ISearch_get_URL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISearch_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ISearches interface
+ */
 #ifndef __ISearches_INTERFACE_DEFINED__
 #define __ISearches_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ISearches;
+
+DEFINE_GUID(IID_ISearches, 0x47c922a2, 0x3dd5, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ISearches : public IDispatch {
-  public:
-    virtual HRESULT WINAPI get_Count(__LONG32 *plCount) = 0;
-    virtual HRESULT WINAPI get_Default(BSTR *pbstrDefault) = 0;
-    virtual HRESULT WINAPI Item(VARIANT index,ISearch **ppid) = 0;
-    virtual HRESULT WINAPI _NewEnum(IUnknown **ppunk) = 0;
-  };
+MIDL_INTERFACE("47c922a2-3dd5-11d2-bf8b-00c04fb93661")
+ISearches : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Default(
+        BSTR *pbstrDefault) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT index,
+        ISearch **ppid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE _NewEnum(
+        IUnknown **ppunk) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISearches, 0x47c922a2, 0x3dd5, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61)
+#endif
 #else
-  typedef struct ISearchesVtbl {
+typedef struct ISearchesVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ISearches *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ISearches *This);
-      ULONG (WINAPI *Release)(ISearches *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ISearches *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ISearches *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ISearches *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ISearches *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *get_Count)(ISearches *This,__LONG32 *plCount);
-      HRESULT (WINAPI *get_Default)(ISearches *This,BSTR *pbstrDefault);
-      HRESULT (WINAPI *Item)(ISearches *This,VARIANT index,ISearch **ppid);
-      HRESULT (WINAPI *_NewEnum)(ISearches *This,IUnknown **ppunk);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISearches* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISearches* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISearches* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ISearches* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ISearches* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ISearches* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ISearches* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ISearches methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        ISearches* This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_Default)(
+        ISearches* This,
+        BSTR *pbstrDefault);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        ISearches* This,
+        VARIANT index,
+        ISearch **ppid);
+
+    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
+        ISearches* This,
+        IUnknown **ppunk);
+
     END_INTERFACE
-  } ISearchesVtbl;
-  struct ISearches {
-    CONST_VTBL struct ISearchesVtbl *lpVtbl;
-  };
+} ISearchesVtbl;
+interface ISearches {
+    CONST_VTBL ISearchesVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ISearches_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ISearches_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ISearches_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ISearches_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ISearches_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ISearches_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ISearches_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ISearches methods ***/
 #define ISearches_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
 #define ISearches_get_Default(This,pbstrDefault) (This)->lpVtbl->get_Default(This,pbstrDefault)
 #define ISearches_Item(This,index,ppid) (This)->lpVtbl->Item(This,index,ppid)
 #define ISearches__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ISearches_QueryInterface(ISearches* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ISearches_AddRef(ISearches* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ISearches_Release(ISearches* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ISearches_GetTypeInfoCount(ISearches* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ISearches_GetTypeInfo(ISearches* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ISearches_GetIDsOfNames(ISearches* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ISearches_Invoke(ISearches* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ISearches methods ***/
+static FORCEINLINE HRESULT ISearches_get_Count(ISearches* This,LONG *plCount) {
+    return This->lpVtbl->get_Count(This,plCount);
+}
+static FORCEINLINE HRESULT ISearches_get_Default(ISearches* This,BSTR *pbstrDefault) {
+    return This->lpVtbl->get_Default(This,pbstrDefault);
+}
+static FORCEINLINE HRESULT ISearches_Item(ISearches* This,VARIANT index,ISearch **ppid) {
+    return This->lpVtbl->Item(This,index,ppid);
+}
+static FORCEINLINE HRESULT ISearches__NewEnum(ISearches* This,IUnknown **ppunk) {
+    return This->lpVtbl->_NewEnum(This,ppunk);
+}
 #endif
 #endif
-  HRESULT WINAPI ISearches_get_Count_Proxy(ISearches *This,__LONG32 *plCount);
-  void __RPC_STUB ISearches_get_Count_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearches_get_Default_Proxy(ISearches *This,BSTR *pbstrDefault);
-  void __RPC_STUB ISearches_get_Default_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearches_Item_Proxy(ISearches *This,VARIANT index,ISearch **ppid);
-  void __RPC_STUB ISearches_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearches__NewEnum_Proxy(ISearches *This,IUnknown **ppunk);
-  void __RPC_STUB ISearches__NewEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE ISearches_get_Count_Proxy(
+    ISearches* This,
+    LONG *plCount);
+void __RPC_STUB ISearches_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearches_get_Default_Proxy(
+    ISearches* This,
+    BSTR *pbstrDefault);
+void __RPC_STUB ISearches_get_Default_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearches_Item_Proxy(
+    ISearches* This,
+    VARIANT index,
+    ISearch **ppid);
+void __RPC_STUB ISearches_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearches__NewEnum_Proxy(
+    ISearches* This,
+    IUnknown **ppunk);
+void __RPC_STUB ISearches__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISearches_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ISearchAssistantOC interface
+ */
 #ifndef __ISearchAssistantOC_INTERFACE_DEFINED__
 #define __ISearchAssistantOC_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ISearchAssistantOC;
+
+DEFINE_GUID(IID_ISearchAssistantOC, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ISearchAssistantOC : public IDispatch {
-  public:
-    virtual HRESULT WINAPI AddNextMenuItem(BSTR bstrText,__LONG32 idItem) = 0;
-    virtual HRESULT WINAPI SetDefaultSearchUrl(BSTR bstrUrl) = 0;
-    virtual HRESULT WINAPI NavigateToDefaultSearch(void) = 0;
-    virtual HRESULT WINAPI IsRestricted(BSTR bstrGuid,VARIANT_BOOL *pVal) = 0;
-    virtual HRESULT WINAPI get_ShellFeaturesEnabled(VARIANT_BOOL *pVal) = 0;
-    virtual HRESULT WINAPI get_SearchAssistantDefault(VARIANT_BOOL *pVal) = 0;
-    virtual HRESULT WINAPI get_Searches(ISearches **ppid) = 0;
-    virtual HRESULT WINAPI get_InWebFolder(VARIANT_BOOL *pVal) = 0;
-    virtual HRESULT WINAPI PutProperty(VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue) = 0;
-    virtual HRESULT WINAPI GetProperty(VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue) = 0;
-    virtual HRESULT WINAPI put_EventHandled(VARIANT_BOOL bHandled) = 0;
-    virtual HRESULT WINAPI ResetNextMenu(void) = 0;
-    virtual HRESULT WINAPI FindOnWeb(void) = 0;
-    virtual HRESULT WINAPI FindFilesOrFolders(void) = 0;
-    virtual HRESULT WINAPI FindComputer(void) = 0;
-    virtual HRESULT WINAPI FindPrinter(void) = 0;
-    virtual HRESULT WINAPI FindPeople(void) = 0;
-    virtual HRESULT WINAPI GetSearchAssistantURL(VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue) = 0;
-    virtual HRESULT WINAPI NotifySearchSettingsChanged(void) = 0;
-    virtual HRESULT WINAPI put_ASProvider(BSTR Provider) = 0;
-    virtual HRESULT WINAPI get_ASProvider(BSTR *pProvider) = 0;
-    virtual HRESULT WINAPI put_ASSetting(int Setting) = 0;
-    virtual HRESULT WINAPI get_ASSetting(int *pSetting) = 0;
-    virtual HRESULT WINAPI NETDetectNextNavigate(void) = 0;
-    virtual HRESULT WINAPI PutFindText(BSTR FindText) = 0;
-    virtual HRESULT WINAPI get_Version(int *pVersion) = 0;
-    virtual HRESULT WINAPI EncodeString(BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult) = 0;
-  };
+MIDL_INTERFACE("72423e8f-8011-11d2-be79-00a0c9a83da1")
+ISearchAssistantOC : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE AddNextMenuItem(
+        BSTR bstrText,
+        LONG idItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefaultSearchUrl(
+        BSTR bstrUrl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NavigateToDefaultSearch(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRestricted(
+        BSTR bstrGuid,
+        VARIANT_BOOL *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ShellFeaturesEnabled(
+        VARIANT_BOOL *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SearchAssistantDefault(
+        VARIANT_BOOL *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Searches(
+        ISearches **ppid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InWebFolder(
+        VARIANT_BOOL *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutProperty(
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR bstrValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR *pbstrValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_EventHandled(
+        VARIANT_BOOL rhs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResetNextMenu(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindOnWeb(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindFilesOrFolders(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindComputer(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindPrinter(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindPeople(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSearchAssistantURL(
+        VARIANT_BOOL bSubstitute,
+        VARIANT_BOOL bCustomize,
+        BSTR *pbstrValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NotifySearchSettingsChanged(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ASProvider(
+        BSTR pProvider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ASProvider(
+        BSTR *pProvider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ASSetting(
+        int pSetting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ASSetting(
+        int *pSetting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NETDetectNextNavigate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutFindText(
+        BSTR FindText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Version(
+        int *pVersion) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EncodeString(
+        BSTR bstrValue,
+        BSTR bstrCharSet,
+        VARIANT_BOOL bUseUTF8,
+        BSTR *pbstrResult) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISearchAssistantOC, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1)
+#endif
 #else
-  typedef struct ISearchAssistantOCVtbl {
+typedef struct ISearchAssistantOCVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ISearchAssistantOC *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ISearchAssistantOC *This);
-      ULONG (WINAPI *Release)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ISearchAssistantOC *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ISearchAssistantOC *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ISearchAssistantOC *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ISearchAssistantOC *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *AddNextMenuItem)(ISearchAssistantOC *This,BSTR bstrText,__LONG32 idItem);
-      HRESULT (WINAPI *SetDefaultSearchUrl)(ISearchAssistantOC *This,BSTR bstrUrl);
-      HRESULT (WINAPI *NavigateToDefaultSearch)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *IsRestricted)(ISearchAssistantOC *This,BSTR bstrGuid,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_ShellFeaturesEnabled)(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_SearchAssistantDefault)(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_Searches)(ISearchAssistantOC *This,ISearches **ppid);
-      HRESULT (WINAPI *get_InWebFolder)(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *PutProperty)(ISearchAssistantOC *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue);
-      HRESULT (WINAPI *GetProperty)(ISearchAssistantOC *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue);
-      HRESULT (WINAPI *put_EventHandled)(ISearchAssistantOC *This,VARIANT_BOOL bHandled);
-      HRESULT (WINAPI *ResetNextMenu)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *FindOnWeb)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *FindFilesOrFolders)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *FindComputer)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *FindPrinter)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *FindPeople)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *GetSearchAssistantURL)(ISearchAssistantOC *This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue);
-      HRESULT (WINAPI *NotifySearchSettingsChanged)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *put_ASProvider)(ISearchAssistantOC *This,BSTR Provider);
-      HRESULT (WINAPI *get_ASProvider)(ISearchAssistantOC *This,BSTR *pProvider);
-      HRESULT (WINAPI *put_ASSetting)(ISearchAssistantOC *This,int Setting);
-      HRESULT (WINAPI *get_ASSetting)(ISearchAssistantOC *This,int *pSetting);
-      HRESULT (WINAPI *NETDetectNextNavigate)(ISearchAssistantOC *This);
-      HRESULT (WINAPI *PutFindText)(ISearchAssistantOC *This,BSTR FindText);
-      HRESULT (WINAPI *get_Version)(ISearchAssistantOC *This,int *pVersion);
-      HRESULT (WINAPI *EncodeString)(ISearchAssistantOC *This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISearchAssistantOC* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISearchAssistantOC* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISearchAssistantOC* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ISearchAssistantOC* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ISearchAssistantOC* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ISearchAssistantOC* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ISearchAssistantOC* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ISearchAssistantOC methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddNextMenuItem)(
+        ISearchAssistantOC* This,
+        BSTR bstrText,
+        LONG idItem);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultSearchUrl)(
+        ISearchAssistantOC* This,
+        BSTR bstrUrl);
+
+    HRESULT (STDMETHODCALLTYPE *NavigateToDefaultSearch)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
+        ISearchAssistantOC* This,
+        BSTR bstrGuid,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_ShellFeaturesEnabled)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_SearchAssistantDefault)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Searches)(
+        ISearchAssistantOC* This,
+        ISearches **ppid);
+
+    HRESULT (STDMETHODCALLTYPE *get_InWebFolder)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR bstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *put_EventHandled)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL rhs);
+
+    HRESULT (STDMETHODCALLTYPE *ResetNextMenu)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindOnWeb)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindFilesOrFolders)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindComputer)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPeople)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetSearchAssistantURL)(
+        ISearchAssistantOC* This,
+        VARIANT_BOOL bSubstitute,
+        VARIANT_BOOL bCustomize,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *NotifySearchSettingsChanged)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASProvider)(
+        ISearchAssistantOC* This,
+        BSTR pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASProvider)(
+        ISearchAssistantOC* This,
+        BSTR *pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASSetting)(
+        ISearchAssistantOC* This,
+        int pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASSetting)(
+        ISearchAssistantOC* This,
+        int *pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *NETDetectNextNavigate)(
+        ISearchAssistantOC* This);
+
+    HRESULT (STDMETHODCALLTYPE *PutFindText)(
+        ISearchAssistantOC* This,
+        BSTR FindText);
+
+    HRESULT (STDMETHODCALLTYPE *get_Version)(
+        ISearchAssistantOC* This,
+        int *pVersion);
+
+    HRESULT (STDMETHODCALLTYPE *EncodeString)(
+        ISearchAssistantOC* This,
+        BSTR bstrValue,
+        BSTR bstrCharSet,
+        VARIANT_BOOL bUseUTF8,
+        BSTR *pbstrResult);
+
     END_INTERFACE
-  } ISearchAssistantOCVtbl;
-  struct ISearchAssistantOC {
-    CONST_VTBL struct ISearchAssistantOCVtbl *lpVtbl;
-  };
+} ISearchAssistantOCVtbl;
+interface ISearchAssistantOC {
+    CONST_VTBL ISearchAssistantOCVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ISearchAssistantOC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ISearchAssistantOC_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ISearchAssistantOC_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ISearchAssistantOC_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ISearchAssistantOC_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ISearchAssistantOC_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ISearchAssistantOC_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ISearchAssistantOC methods ***/
 #define ISearchAssistantOC_AddNextMenuItem(This,bstrText,idItem) (This)->lpVtbl->AddNextMenuItem(This,bstrText,idItem)
 #define ISearchAssistantOC_SetDefaultSearchUrl(This,bstrUrl) (This)->lpVtbl->SetDefaultSearchUrl(This,bstrUrl)
 #define ISearchAssistantOC_NavigateToDefaultSearch(This) (This)->lpVtbl->NavigateToDefaultSearch(This)
@@ -1717,7 +6266,7 @@
 #define ISearchAssistantOC_get_InWebFolder(This,pVal) (This)->lpVtbl->get_InWebFolder(This,pVal)
 #define ISearchAssistantOC_PutProperty(This,bPerLocale,bstrName,bstrValue) (This)->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue)
 #define ISearchAssistantOC_GetProperty(This,bPerLocale,bstrName,pbstrValue) (This)->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue)
-#define ISearchAssistantOC_put_EventHandled(This,bHandled) (This)->lpVtbl->put_EventHandled(This,bHandled)
+#define ISearchAssistantOC_put_EventHandled(This,rhs) (This)->lpVtbl->put_EventHandled(This,rhs)
 #define ISearchAssistantOC_ResetNextMenu(This) (This)->lpVtbl->ResetNextMenu(This)
 #define ISearchAssistantOC_FindOnWeb(This) (This)->lpVtbl->FindOnWeb(This)
 #define ISearchAssistantOC_FindFilesOrFolders(This) (This)->lpVtbl->FindFilesOrFolders(This)
@@ -1726,131 +6275,544 @@
 #define ISearchAssistantOC_FindPeople(This) (This)->lpVtbl->FindPeople(This)
 #define ISearchAssistantOC_GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue) (This)->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue)
 #define ISearchAssistantOC_NotifySearchSettingsChanged(This) (This)->lpVtbl->NotifySearchSettingsChanged(This)
-#define ISearchAssistantOC_put_ASProvider(This,Provider) (This)->lpVtbl->put_ASProvider(This,Provider)
+#define ISearchAssistantOC_put_ASProvider(This,pProvider) (This)->lpVtbl->put_ASProvider(This,pProvider)
 #define ISearchAssistantOC_get_ASProvider(This,pProvider) (This)->lpVtbl->get_ASProvider(This,pProvider)
-#define ISearchAssistantOC_put_ASSetting(This,Setting) (This)->lpVtbl->put_ASSetting(This,Setting)
+#define ISearchAssistantOC_put_ASSetting(This,pSetting) (This)->lpVtbl->put_ASSetting(This,pSetting)
 #define ISearchAssistantOC_get_ASSetting(This,pSetting) (This)->lpVtbl->get_ASSetting(This,pSetting)
 #define ISearchAssistantOC_NETDetectNextNavigate(This) (This)->lpVtbl->NETDetectNextNavigate(This)
 #define ISearchAssistantOC_PutFindText(This,FindText) (This)->lpVtbl->PutFindText(This,FindText)
 #define ISearchAssistantOC_get_Version(This,pVersion) (This)->lpVtbl->get_Version(This,pVersion)
 #define ISearchAssistantOC_EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult) (This)->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC_QueryInterface(ISearchAssistantOC* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ISearchAssistantOC_AddRef(ISearchAssistantOC* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ISearchAssistantOC_Release(ISearchAssistantOC* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC_GetTypeInfoCount(ISearchAssistantOC* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_GetTypeInfo(ISearchAssistantOC* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_GetIDsOfNames(ISearchAssistantOC* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_Invoke(ISearchAssistantOC* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ISearchAssistantOC methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC_AddNextMenuItem(ISearchAssistantOC* This,BSTR bstrText,LONG idItem) {
+    return This->lpVtbl->AddNextMenuItem(This,bstrText,idItem);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_SetDefaultSearchUrl(ISearchAssistantOC* This,BSTR bstrUrl) {
+    return This->lpVtbl->SetDefaultSearchUrl(This,bstrUrl);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_NavigateToDefaultSearch(ISearchAssistantOC* This) {
+    return This->lpVtbl->NavigateToDefaultSearch(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_IsRestricted(ISearchAssistantOC* This,BSTR bstrGuid,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->IsRestricted(This,bstrGuid,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_ShellFeaturesEnabled(ISearchAssistantOC* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_ShellFeaturesEnabled(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_SearchAssistantDefault(ISearchAssistantOC* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_SearchAssistantDefault(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_Searches(ISearchAssistantOC* This,ISearches **ppid) {
+    return This->lpVtbl->get_Searches(This,ppid);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_InWebFolder(ISearchAssistantOC* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_InWebFolder(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_PutProperty(ISearchAssistantOC* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue) {
+    return This->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_GetProperty(ISearchAssistantOC* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue) {
+    return This->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_put_EventHandled(ISearchAssistantOC* This,VARIANT_BOOL rhs) {
+    return This->lpVtbl->put_EventHandled(This,rhs);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_ResetNextMenu(ISearchAssistantOC* This) {
+    return This->lpVtbl->ResetNextMenu(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_FindOnWeb(ISearchAssistantOC* This) {
+    return This->lpVtbl->FindOnWeb(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_FindFilesOrFolders(ISearchAssistantOC* This) {
+    return This->lpVtbl->FindFilesOrFolders(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_FindComputer(ISearchAssistantOC* This) {
+    return This->lpVtbl->FindComputer(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_FindPrinter(ISearchAssistantOC* This) {
+    return This->lpVtbl->FindPrinter(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_FindPeople(ISearchAssistantOC* This) {
+    return This->lpVtbl->FindPeople(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_GetSearchAssistantURL(ISearchAssistantOC* This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue) {
+    return This->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_NotifySearchSettingsChanged(ISearchAssistantOC* This) {
+    return This->lpVtbl->NotifySearchSettingsChanged(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_put_ASProvider(ISearchAssistantOC* This,BSTR pProvider) {
+    return This->lpVtbl->put_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_ASProvider(ISearchAssistantOC* This,BSTR *pProvider) {
+    return This->lpVtbl->get_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_put_ASSetting(ISearchAssistantOC* This,int pSetting) {
+    return This->lpVtbl->put_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_ASSetting(ISearchAssistantOC* This,int *pSetting) {
+    return This->lpVtbl->get_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_NETDetectNextNavigate(ISearchAssistantOC* This) {
+    return This->lpVtbl->NETDetectNextNavigate(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_PutFindText(ISearchAssistantOC* This,BSTR FindText) {
+    return This->lpVtbl->PutFindText(This,FindText);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_get_Version(ISearchAssistantOC* This,int *pVersion) {
+    return This->lpVtbl->get_Version(This,pVersion);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC_EncodeString(ISearchAssistantOC* This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult) {
+    return This->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult);
+}
 #endif
 #endif
-  HRESULT WINAPI ISearchAssistantOC_AddNextMenuItem_Proxy(ISearchAssistantOC *This,BSTR bstrText,__LONG32 idItem);
-  void __RPC_STUB ISearchAssistantOC_AddNextMenuItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_SetDefaultSearchUrl_Proxy(ISearchAssistantOC *This,BSTR bstrUrl);
-  void __RPC_STUB ISearchAssistantOC_SetDefaultSearchUrl_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_NavigateToDefaultSearch_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_NavigateToDefaultSearch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_IsRestricted_Proxy(ISearchAssistantOC *This,BSTR bstrGuid,VARIANT_BOOL *pVal);
-  void __RPC_STUB ISearchAssistantOC_IsRestricted_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_ShellFeaturesEnabled_Proxy(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-  void __RPC_STUB ISearchAssistantOC_get_ShellFeaturesEnabled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_SearchAssistantDefault_Proxy(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-  void __RPC_STUB ISearchAssistantOC_get_SearchAssistantDefault_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_Searches_Proxy(ISearchAssistantOC *This,ISearches **ppid);
-  void __RPC_STUB ISearchAssistantOC_get_Searches_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_InWebFolder_Proxy(ISearchAssistantOC *This,VARIANT_BOOL *pVal);
-  void __RPC_STUB ISearchAssistantOC_get_InWebFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_PutProperty_Proxy(ISearchAssistantOC *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue);
-  void __RPC_STUB ISearchAssistantOC_PutProperty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_GetProperty_Proxy(ISearchAssistantOC *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue);
-  void __RPC_STUB ISearchAssistantOC_GetProperty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_put_EventHandled_Proxy(ISearchAssistantOC *This,VARIANT_BOOL bHandled);
-  void __RPC_STUB ISearchAssistantOC_put_EventHandled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_ResetNextMenu_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_ResetNextMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_FindOnWeb_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_FindOnWeb_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_FindFilesOrFolders_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_FindFilesOrFolders_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_FindComputer_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_FindComputer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_FindPrinter_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_FindPrinter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_FindPeople_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_FindPeople_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_GetSearchAssistantURL_Proxy(ISearchAssistantOC *This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue);
-  void __RPC_STUB ISearchAssistantOC_GetSearchAssistantURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_NotifySearchSettingsChanged_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_NotifySearchSettingsChanged_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_put_ASProvider_Proxy(ISearchAssistantOC *This,BSTR Provider);
-  void __RPC_STUB ISearchAssistantOC_put_ASProvider_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_ASProvider_Proxy(ISearchAssistantOC *This,BSTR *pProvider);
-  void __RPC_STUB ISearchAssistantOC_get_ASProvider_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_put_ASSetting_Proxy(ISearchAssistantOC *This,int Setting);
-  void __RPC_STUB ISearchAssistantOC_put_ASSetting_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_ASSetting_Proxy(ISearchAssistantOC *This,int *pSetting);
-  void __RPC_STUB ISearchAssistantOC_get_ASSetting_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_NETDetectNextNavigate_Proxy(ISearchAssistantOC *This);
-  void __RPC_STUB ISearchAssistantOC_NETDetectNextNavigate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_PutFindText_Proxy(ISearchAssistantOC *This,BSTR FindText);
-  void __RPC_STUB ISearchAssistantOC_PutFindText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_get_Version_Proxy(ISearchAssistantOC *This,int *pVersion);
-  void __RPC_STUB ISearchAssistantOC_get_Version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC_EncodeString_Proxy(ISearchAssistantOC *This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult);
-  void __RPC_STUB ISearchAssistantOC_EncodeString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_AddNextMenuItem_Proxy(
+    ISearchAssistantOC* This,
+    BSTR bstrText,
+    LONG idItem);
+void __RPC_STUB ISearchAssistantOC_AddNextMenuItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_SetDefaultSearchUrl_Proxy(
+    ISearchAssistantOC* This,
+    BSTR bstrUrl);
+void __RPC_STUB ISearchAssistantOC_SetDefaultSearchUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_NavigateToDefaultSearch_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_NavigateToDefaultSearch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_IsRestricted_Proxy(
+    ISearchAssistantOC* This,
+    BSTR bstrGuid,
+    VARIANT_BOOL *pVal);
+void __RPC_STUB ISearchAssistantOC_IsRestricted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_ShellFeaturesEnabled_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL *pVal);
+void __RPC_STUB ISearchAssistantOC_get_ShellFeaturesEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_SearchAssistantDefault_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL *pVal);
+void __RPC_STUB ISearchAssistantOC_get_SearchAssistantDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_Searches_Proxy(
+    ISearchAssistantOC* This,
+    ISearches **ppid);
+void __RPC_STUB ISearchAssistantOC_get_Searches_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_InWebFolder_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL *pVal);
+void __RPC_STUB ISearchAssistantOC_get_InWebFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_PutProperty_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL bPerLocale,
+    BSTR bstrName,
+    BSTR bstrValue);
+void __RPC_STUB ISearchAssistantOC_PutProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_GetProperty_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL bPerLocale,
+    BSTR bstrName,
+    BSTR *pbstrValue);
+void __RPC_STUB ISearchAssistantOC_GetProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_put_EventHandled_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL rhs);
+void __RPC_STUB ISearchAssistantOC_put_EventHandled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_ResetNextMenu_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_ResetNextMenu_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_FindOnWeb_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_FindOnWeb_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_FindFilesOrFolders_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_FindFilesOrFolders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_FindComputer_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_FindComputer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_FindPrinter_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_FindPrinter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_FindPeople_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_FindPeople_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_GetSearchAssistantURL_Proxy(
+    ISearchAssistantOC* This,
+    VARIANT_BOOL bSubstitute,
+    VARIANT_BOOL bCustomize,
+    BSTR *pbstrValue);
+void __RPC_STUB ISearchAssistantOC_GetSearchAssistantURL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_NotifySearchSettingsChanged_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_NotifySearchSettingsChanged_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_put_ASProvider_Proxy(
+    ISearchAssistantOC* This,
+    BSTR pProvider);
+void __RPC_STUB ISearchAssistantOC_put_ASProvider_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_ASProvider_Proxy(
+    ISearchAssistantOC* This,
+    BSTR *pProvider);
+void __RPC_STUB ISearchAssistantOC_get_ASProvider_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_put_ASSetting_Proxy(
+    ISearchAssistantOC* This,
+    int pSetting);
+void __RPC_STUB ISearchAssistantOC_put_ASSetting_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_ASSetting_Proxy(
+    ISearchAssistantOC* This,
+    int *pSetting);
+void __RPC_STUB ISearchAssistantOC_get_ASSetting_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_NETDetectNextNavigate_Proxy(
+    ISearchAssistantOC* This);
+void __RPC_STUB ISearchAssistantOC_NETDetectNextNavigate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_PutFindText_Proxy(
+    ISearchAssistantOC* This,
+    BSTR FindText);
+void __RPC_STUB ISearchAssistantOC_PutFindText_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_get_Version_Proxy(
+    ISearchAssistantOC* This,
+    int *pVersion);
+void __RPC_STUB ISearchAssistantOC_get_Version_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC_EncodeString_Proxy(
+    ISearchAssistantOC* This,
+    BSTR bstrValue,
+    BSTR bstrCharSet,
+    VARIANT_BOOL bUseUTF8,
+    BSTR *pbstrResult);
+void __RPC_STUB ISearchAssistantOC_EncodeString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISearchAssistantOC_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ISearchAssistantOC2 interface
+ */
 #ifndef __ISearchAssistantOC2_INTERFACE_DEFINED__
 #define __ISearchAssistantOC2_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ISearchAssistantOC2;
+
+DEFINE_GUID(IID_ISearchAssistantOC2, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa2);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ISearchAssistantOC2 : public ISearchAssistantOC {
-  public:
-    virtual HRESULT WINAPI get_ShowFindPrinter(VARIANT_BOOL *pbShowFindPrinter) = 0;
-  };
+MIDL_INTERFACE("72423e8f-8011-11d2-be79-00a0c9a83da2")
+ISearchAssistantOC2 : public ISearchAssistantOC
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ShowFindPrinter(
+        VARIANT_BOOL *pbShowFindPrinter) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISearchAssistantOC2, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa2)
+#endif
 #else
-  typedef struct ISearchAssistantOC2Vtbl {
+typedef struct ISearchAssistantOC2Vtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ISearchAssistantOC2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ISearchAssistantOC2 *This);
-      ULONG (WINAPI *Release)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ISearchAssistantOC2 *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ISearchAssistantOC2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ISearchAssistantOC2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ISearchAssistantOC2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *AddNextMenuItem)(ISearchAssistantOC2 *This,BSTR bstrText,__LONG32 idItem);
-      HRESULT (WINAPI *SetDefaultSearchUrl)(ISearchAssistantOC2 *This,BSTR bstrUrl);
-      HRESULT (WINAPI *NavigateToDefaultSearch)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *IsRestricted)(ISearchAssistantOC2 *This,BSTR bstrGuid,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_ShellFeaturesEnabled)(ISearchAssistantOC2 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_SearchAssistantDefault)(ISearchAssistantOC2 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_Searches)(ISearchAssistantOC2 *This,ISearches **ppid);
-      HRESULT (WINAPI *get_InWebFolder)(ISearchAssistantOC2 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *PutProperty)(ISearchAssistantOC2 *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue);
-      HRESULT (WINAPI *GetProperty)(ISearchAssistantOC2 *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue);
-      HRESULT (WINAPI *put_EventHandled)(ISearchAssistantOC2 *This,VARIANT_BOOL bHandled);
-      HRESULT (WINAPI *ResetNextMenu)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *FindOnWeb)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *FindFilesOrFolders)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *FindComputer)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *FindPrinter)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *FindPeople)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *GetSearchAssistantURL)(ISearchAssistantOC2 *This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue);
-      HRESULT (WINAPI *NotifySearchSettingsChanged)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *put_ASProvider)(ISearchAssistantOC2 *This,BSTR Provider);
-      HRESULT (WINAPI *get_ASProvider)(ISearchAssistantOC2 *This,BSTR *pProvider);
-      HRESULT (WINAPI *put_ASSetting)(ISearchAssistantOC2 *This,int Setting);
-      HRESULT (WINAPI *get_ASSetting)(ISearchAssistantOC2 *This,int *pSetting);
-      HRESULT (WINAPI *NETDetectNextNavigate)(ISearchAssistantOC2 *This);
-      HRESULT (WINAPI *PutFindText)(ISearchAssistantOC2 *This,BSTR FindText);
-      HRESULT (WINAPI *get_Version)(ISearchAssistantOC2 *This,int *pVersion);
-      HRESULT (WINAPI *EncodeString)(ISearchAssistantOC2 *This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult);
-      HRESULT (WINAPI *get_ShowFindPrinter)(ISearchAssistantOC2 *This,VARIANT_BOOL *pbShowFindPrinter);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISearchAssistantOC2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISearchAssistantOC2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISearchAssistantOC2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ISearchAssistantOC2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ISearchAssistantOC2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ISearchAssistantOC2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ISearchAssistantOC2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ISearchAssistantOC methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddNextMenuItem)(
+        ISearchAssistantOC2* This,
+        BSTR bstrText,
+        LONG idItem);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultSearchUrl)(
+        ISearchAssistantOC2* This,
+        BSTR bstrUrl);
+
+    HRESULT (STDMETHODCALLTYPE *NavigateToDefaultSearch)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
+        ISearchAssistantOC2* This,
+        BSTR bstrGuid,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_ShellFeaturesEnabled)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_SearchAssistantDefault)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Searches)(
+        ISearchAssistantOC2* This,
+        ISearches **ppid);
+
+    HRESULT (STDMETHODCALLTYPE *get_InWebFolder)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR bstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *put_EventHandled)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL rhs);
+
+    HRESULT (STDMETHODCALLTYPE *ResetNextMenu)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindOnWeb)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindFilesOrFolders)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindComputer)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPeople)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetSearchAssistantURL)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL bSubstitute,
+        VARIANT_BOOL bCustomize,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *NotifySearchSettingsChanged)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASProvider)(
+        ISearchAssistantOC2* This,
+        BSTR pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASProvider)(
+        ISearchAssistantOC2* This,
+        BSTR *pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASSetting)(
+        ISearchAssistantOC2* This,
+        int pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASSetting)(
+        ISearchAssistantOC2* This,
+        int *pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *NETDetectNextNavigate)(
+        ISearchAssistantOC2* This);
+
+    HRESULT (STDMETHODCALLTYPE *PutFindText)(
+        ISearchAssistantOC2* This,
+        BSTR FindText);
+
+    HRESULT (STDMETHODCALLTYPE *get_Version)(
+        ISearchAssistantOC2* This,
+        int *pVersion);
+
+    HRESULT (STDMETHODCALLTYPE *EncodeString)(
+        ISearchAssistantOC2* This,
+        BSTR bstrValue,
+        BSTR bstrCharSet,
+        VARIANT_BOOL bUseUTF8,
+        BSTR *pbstrResult);
+
+    /*** ISearchAssistantOC2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ShowFindPrinter)(
+        ISearchAssistantOC2* This,
+        VARIANT_BOOL *pbShowFindPrinter);
+
     END_INTERFACE
-  } ISearchAssistantOC2Vtbl;
-  struct ISearchAssistantOC2 {
-    CONST_VTBL struct ISearchAssistantOC2Vtbl *lpVtbl;
-  };
+} ISearchAssistantOC2Vtbl;
+interface ISearchAssistantOC2 {
+    CONST_VTBL ISearchAssistantOC2Vtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ISearchAssistantOC2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ISearchAssistantOC2_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ISearchAssistantOC2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ISearchAssistantOC2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ISearchAssistantOC2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ISearchAssistantOC2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ISearchAssistantOC2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ISearchAssistantOC methods ***/
 #define ISearchAssistantOC2_AddNextMenuItem(This,bstrText,idItem) (This)->lpVtbl->AddNextMenuItem(This,bstrText,idItem)
 #define ISearchAssistantOC2_SetDefaultSearchUrl(This,bstrUrl) (This)->lpVtbl->SetDefaultSearchUrl(This,bstrUrl)
 #define ISearchAssistantOC2_NavigateToDefaultSearch(This) (This)->lpVtbl->NavigateToDefaultSearch(This)
@@ -1861,7 +6823,7 @@
 #define ISearchAssistantOC2_get_InWebFolder(This,pVal) (This)->lpVtbl->get_InWebFolder(This,pVal)
 #define ISearchAssistantOC2_PutProperty(This,bPerLocale,bstrName,bstrValue) (This)->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue)
 #define ISearchAssistantOC2_GetProperty(This,bPerLocale,bstrName,pbstrValue) (This)->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue)
-#define ISearchAssistantOC2_put_EventHandled(This,bHandled) (This)->lpVtbl->put_EventHandled(This,bHandled)
+#define ISearchAssistantOC2_put_EventHandled(This,rhs) (This)->lpVtbl->put_EventHandled(This,rhs)
 #define ISearchAssistantOC2_ResetNextMenu(This) (This)->lpVtbl->ResetNextMenu(This)
 #define ISearchAssistantOC2_FindOnWeb(This) (This)->lpVtbl->FindOnWeb(This)
 #define ISearchAssistantOC2_FindFilesOrFolders(This) (This)->lpVtbl->FindFilesOrFolders(This)
@@ -1870,85 +6832,359 @@
 #define ISearchAssistantOC2_FindPeople(This) (This)->lpVtbl->FindPeople(This)
 #define ISearchAssistantOC2_GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue) (This)->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue)
 #define ISearchAssistantOC2_NotifySearchSettingsChanged(This) (This)->lpVtbl->NotifySearchSettingsChanged(This)
-#define ISearchAssistantOC2_put_ASProvider(This,Provider) (This)->lpVtbl->put_ASProvider(This,Provider)
+#define ISearchAssistantOC2_put_ASProvider(This,pProvider) (This)->lpVtbl->put_ASProvider(This,pProvider)
 #define ISearchAssistantOC2_get_ASProvider(This,pProvider) (This)->lpVtbl->get_ASProvider(This,pProvider)
-#define ISearchAssistantOC2_put_ASSetting(This,Setting) (This)->lpVtbl->put_ASSetting(This,Setting)
+#define ISearchAssistantOC2_put_ASSetting(This,pSetting) (This)->lpVtbl->put_ASSetting(This,pSetting)
 #define ISearchAssistantOC2_get_ASSetting(This,pSetting) (This)->lpVtbl->get_ASSetting(This,pSetting)
 #define ISearchAssistantOC2_NETDetectNextNavigate(This) (This)->lpVtbl->NETDetectNextNavigate(This)
 #define ISearchAssistantOC2_PutFindText(This,FindText) (This)->lpVtbl->PutFindText(This,FindText)
 #define ISearchAssistantOC2_get_Version(This,pVersion) (This)->lpVtbl->get_Version(This,pVersion)
 #define ISearchAssistantOC2_EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult) (This)->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult)
+/*** ISearchAssistantOC2 methods ***/
 #define ISearchAssistantOC2_get_ShowFindPrinter(This,pbShowFindPrinter) (This)->lpVtbl->get_ShowFindPrinter(This,pbShowFindPrinter)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC2_QueryInterface(ISearchAssistantOC2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ISearchAssistantOC2_AddRef(ISearchAssistantOC2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ISearchAssistantOC2_Release(ISearchAssistantOC2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC2_GetTypeInfoCount(ISearchAssistantOC2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_GetTypeInfo(ISearchAssistantOC2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_GetIDsOfNames(ISearchAssistantOC2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_Invoke(ISearchAssistantOC2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ISearchAssistantOC methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC2_AddNextMenuItem(ISearchAssistantOC2* This,BSTR bstrText,LONG idItem) {
+    return This->lpVtbl->AddNextMenuItem(This,bstrText,idItem);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_SetDefaultSearchUrl(ISearchAssistantOC2* This,BSTR bstrUrl) {
+    return This->lpVtbl->SetDefaultSearchUrl(This,bstrUrl);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_NavigateToDefaultSearch(ISearchAssistantOC2* This) {
+    return This->lpVtbl->NavigateToDefaultSearch(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_IsRestricted(ISearchAssistantOC2* This,BSTR bstrGuid,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->IsRestricted(This,bstrGuid,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_ShellFeaturesEnabled(ISearchAssistantOC2* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_ShellFeaturesEnabled(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_SearchAssistantDefault(ISearchAssistantOC2* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_SearchAssistantDefault(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_Searches(ISearchAssistantOC2* This,ISearches **ppid) {
+    return This->lpVtbl->get_Searches(This,ppid);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_InWebFolder(ISearchAssistantOC2* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_InWebFolder(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_PutProperty(ISearchAssistantOC2* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue) {
+    return This->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_GetProperty(ISearchAssistantOC2* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue) {
+    return This->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_put_EventHandled(ISearchAssistantOC2* This,VARIANT_BOOL rhs) {
+    return This->lpVtbl->put_EventHandled(This,rhs);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_ResetNextMenu(ISearchAssistantOC2* This) {
+    return This->lpVtbl->ResetNextMenu(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_FindOnWeb(ISearchAssistantOC2* This) {
+    return This->lpVtbl->FindOnWeb(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_FindFilesOrFolders(ISearchAssistantOC2* This) {
+    return This->lpVtbl->FindFilesOrFolders(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_FindComputer(ISearchAssistantOC2* This) {
+    return This->lpVtbl->FindComputer(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_FindPrinter(ISearchAssistantOC2* This) {
+    return This->lpVtbl->FindPrinter(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_FindPeople(ISearchAssistantOC2* This) {
+    return This->lpVtbl->FindPeople(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_GetSearchAssistantURL(ISearchAssistantOC2* This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue) {
+    return This->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_NotifySearchSettingsChanged(ISearchAssistantOC2* This) {
+    return This->lpVtbl->NotifySearchSettingsChanged(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_put_ASProvider(ISearchAssistantOC2* This,BSTR pProvider) {
+    return This->lpVtbl->put_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_ASProvider(ISearchAssistantOC2* This,BSTR *pProvider) {
+    return This->lpVtbl->get_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_put_ASSetting(ISearchAssistantOC2* This,int pSetting) {
+    return This->lpVtbl->put_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_ASSetting(ISearchAssistantOC2* This,int *pSetting) {
+    return This->lpVtbl->get_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_NETDetectNextNavigate(ISearchAssistantOC2* This) {
+    return This->lpVtbl->NETDetectNextNavigate(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_PutFindText(ISearchAssistantOC2* This,BSTR FindText) {
+    return This->lpVtbl->PutFindText(This,FindText);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_Version(ISearchAssistantOC2* This,int *pVersion) {
+    return This->lpVtbl->get_Version(This,pVersion);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC2_EncodeString(ISearchAssistantOC2* This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult) {
+    return This->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult);
+}
+/*** ISearchAssistantOC2 methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC2_get_ShowFindPrinter(ISearchAssistantOC2* This,VARIANT_BOOL *pbShowFindPrinter) {
+    return This->lpVtbl->get_ShowFindPrinter(This,pbShowFindPrinter);
+}
 #endif
 #endif
-  HRESULT WINAPI ISearchAssistantOC2_get_ShowFindPrinter_Proxy(ISearchAssistantOC2 *This,VARIANT_BOOL *pbShowFindPrinter);
-  void __RPC_STUB ISearchAssistantOC2_get_ShowFindPrinter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC2_get_ShowFindPrinter_Proxy(
+    ISearchAssistantOC2* This,
+    VARIANT_BOOL *pbShowFindPrinter);
+void __RPC_STUB ISearchAssistantOC2_get_ShowFindPrinter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISearchAssistantOC2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ISearchAssistantOC3 interface
+ */
 #ifndef __ISearchAssistantOC3_INTERFACE_DEFINED__
 #define __ISearchAssistantOC3_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ISearchAssistantOC3;
+
+DEFINE_GUID(IID_ISearchAssistantOC3, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa3);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ISearchAssistantOC3 : public ISearchAssistantOC2 {
-  public:
-    virtual HRESULT WINAPI get_SearchCompanionAvailable(VARIANT_BOOL *pbAvailable) = 0;
-    virtual HRESULT WINAPI put_UseSearchCompanion(VARIANT_BOOL bUseSC) = 0;
-    virtual HRESULT WINAPI get_UseSearchCompanion(VARIANT_BOOL *pbUseSC) = 0;
-  };
+MIDL_INTERFACE("72423e8f-8011-11d2-be79-00a0c9a83da3")
+ISearchAssistantOC3 : public ISearchAssistantOC2
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SearchCompanionAvailable(
+        VARIANT_BOOL *pbAvailable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_UseSearchCompanion(
+        VARIANT_BOOL pbUseSC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_UseSearchCompanion(
+        VARIANT_BOOL *pbUseSC) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISearchAssistantOC3, 0x72423e8f, 0x8011, 0x11d2, 0xbe,0x79, 0x00,0xa0,0xc9,0xa8,0x3d,0xa3)
+#endif
 #else
-  typedef struct ISearchAssistantOC3Vtbl {
+typedef struct ISearchAssistantOC3Vtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ISearchAssistantOC3 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ISearchAssistantOC3 *This);
-      ULONG (WINAPI *Release)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ISearchAssistantOC3 *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ISearchAssistantOC3 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ISearchAssistantOC3 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ISearchAssistantOC3 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *AddNextMenuItem)(ISearchAssistantOC3 *This,BSTR bstrText,__LONG32 idItem);
-      HRESULT (WINAPI *SetDefaultSearchUrl)(ISearchAssistantOC3 *This,BSTR bstrUrl);
-      HRESULT (WINAPI *NavigateToDefaultSearch)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *IsRestricted)(ISearchAssistantOC3 *This,BSTR bstrGuid,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_ShellFeaturesEnabled)(ISearchAssistantOC3 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_SearchAssistantDefault)(ISearchAssistantOC3 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *get_Searches)(ISearchAssistantOC3 *This,ISearches **ppid);
-      HRESULT (WINAPI *get_InWebFolder)(ISearchAssistantOC3 *This,VARIANT_BOOL *pVal);
-      HRESULT (WINAPI *PutProperty)(ISearchAssistantOC3 *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue);
-      HRESULT (WINAPI *GetProperty)(ISearchAssistantOC3 *This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue);
-      HRESULT (WINAPI *put_EventHandled)(ISearchAssistantOC3 *This,VARIANT_BOOL bHandled);
-      HRESULT (WINAPI *ResetNextMenu)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *FindOnWeb)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *FindFilesOrFolders)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *FindComputer)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *FindPrinter)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *FindPeople)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *GetSearchAssistantURL)(ISearchAssistantOC3 *This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue);
-      HRESULT (WINAPI *NotifySearchSettingsChanged)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *put_ASProvider)(ISearchAssistantOC3 *This,BSTR Provider);
-      HRESULT (WINAPI *get_ASProvider)(ISearchAssistantOC3 *This,BSTR *pProvider);
-      HRESULT (WINAPI *put_ASSetting)(ISearchAssistantOC3 *This,int Setting);
-      HRESULT (WINAPI *get_ASSetting)(ISearchAssistantOC3 *This,int *pSetting);
-      HRESULT (WINAPI *NETDetectNextNavigate)(ISearchAssistantOC3 *This);
-      HRESULT (WINAPI *PutFindText)(ISearchAssistantOC3 *This,BSTR FindText);
-      HRESULT (WINAPI *get_Version)(ISearchAssistantOC3 *This,int *pVersion);
-      HRESULT (WINAPI *EncodeString)(ISearchAssistantOC3 *This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult);
-      HRESULT (WINAPI *get_ShowFindPrinter)(ISearchAssistantOC3 *This,VARIANT_BOOL *pbShowFindPrinter);
-      HRESULT (WINAPI *get_SearchCompanionAvailable)(ISearchAssistantOC3 *This,VARIANT_BOOL *pbAvailable);
-      HRESULT (WINAPI *put_UseSearchCompanion)(ISearchAssistantOC3 *This,VARIANT_BOOL bUseSC);
-      HRESULT (WINAPI *get_UseSearchCompanion)(ISearchAssistantOC3 *This,VARIANT_BOOL *pbUseSC);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISearchAssistantOC3* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISearchAssistantOC3* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISearchAssistantOC3* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ISearchAssistantOC3* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ISearchAssistantOC3* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ISearchAssistantOC3* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ISearchAssistantOC3* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ISearchAssistantOC methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddNextMenuItem)(
+        ISearchAssistantOC3* This,
+        BSTR bstrText,
+        LONG idItem);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultSearchUrl)(
+        ISearchAssistantOC3* This,
+        BSTR bstrUrl);
+
+    HRESULT (STDMETHODCALLTYPE *NavigateToDefaultSearch)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
+        ISearchAssistantOC3* This,
+        BSTR bstrGuid,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_ShellFeaturesEnabled)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_SearchAssistantDefault)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Searches)(
+        ISearchAssistantOC3* This,
+        ISearches **ppid);
+
+    HRESULT (STDMETHODCALLTYPE *get_InWebFolder)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR bstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL bPerLocale,
+        BSTR bstrName,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *put_EventHandled)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL rhs);
+
+    HRESULT (STDMETHODCALLTYPE *ResetNextMenu)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindOnWeb)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindFilesOrFolders)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindComputer)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *FindPeople)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetSearchAssistantURL)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL bSubstitute,
+        VARIANT_BOOL bCustomize,
+        BSTR *pbstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *NotifySearchSettingsChanged)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASProvider)(
+        ISearchAssistantOC3* This,
+        BSTR pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASProvider)(
+        ISearchAssistantOC3* This,
+        BSTR *pProvider);
+
+    HRESULT (STDMETHODCALLTYPE *put_ASSetting)(
+        ISearchAssistantOC3* This,
+        int pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *get_ASSetting)(
+        ISearchAssistantOC3* This,
+        int *pSetting);
+
+    HRESULT (STDMETHODCALLTYPE *NETDetectNextNavigate)(
+        ISearchAssistantOC3* This);
+
+    HRESULT (STDMETHODCALLTYPE *PutFindText)(
+        ISearchAssistantOC3* This,
+        BSTR FindText);
+
+    HRESULT (STDMETHODCALLTYPE *get_Version)(
+        ISearchAssistantOC3* This,
+        int *pVersion);
+
+    HRESULT (STDMETHODCALLTYPE *EncodeString)(
+        ISearchAssistantOC3* This,
+        BSTR bstrValue,
+        BSTR bstrCharSet,
+        VARIANT_BOOL bUseUTF8,
+        BSTR *pbstrResult);
+
+    /*** ISearchAssistantOC2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ShowFindPrinter)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pbShowFindPrinter);
+
+    /*** ISearchAssistantOC3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SearchCompanionAvailable)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pbAvailable);
+
+    HRESULT (STDMETHODCALLTYPE *put_UseSearchCompanion)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL pbUseSC);
+
+    HRESULT (STDMETHODCALLTYPE *get_UseSearchCompanion)(
+        ISearchAssistantOC3* This,
+        VARIANT_BOOL *pbUseSC);
+
     END_INTERFACE
-  } ISearchAssistantOC3Vtbl;
-  struct ISearchAssistantOC3 {
-    CONST_VTBL struct ISearchAssistantOC3Vtbl *lpVtbl;
-  };
+} ISearchAssistantOC3Vtbl;
+interface ISearchAssistantOC3 {
+    CONST_VTBL ISearchAssistantOC3Vtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ISearchAssistantOC3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ISearchAssistantOC3_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ISearchAssistantOC3_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ISearchAssistantOC3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ISearchAssistantOC3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ISearchAssistantOC3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ISearchAssistantOC3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ISearchAssistantOC methods ***/
 #define ISearchAssistantOC3_AddNextMenuItem(This,bstrText,idItem) (This)->lpVtbl->AddNextMenuItem(This,bstrText,idItem)
 #define ISearchAssistantOC3_SetDefaultSearchUrl(This,bstrUrl) (This)->lpVtbl->SetDefaultSearchUrl(This,bstrUrl)
 #define ISearchAssistantOC3_NavigateToDefaultSearch(This) (This)->lpVtbl->NavigateToDefaultSearch(This)
@@ -1959,7 +7195,7 @@
 #define ISearchAssistantOC3_get_InWebFolder(This,pVal) (This)->lpVtbl->get_InWebFolder(This,pVal)
 #define ISearchAssistantOC3_PutProperty(This,bPerLocale,bstrName,bstrValue) (This)->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue)
 #define ISearchAssistantOC3_GetProperty(This,bPerLocale,bstrName,pbstrValue) (This)->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue)
-#define ISearchAssistantOC3_put_EventHandled(This,bHandled) (This)->lpVtbl->put_EventHandled(This,bHandled)
+#define ISearchAssistantOC3_put_EventHandled(This,rhs) (This)->lpVtbl->put_EventHandled(This,rhs)
 #define ISearchAssistantOC3_ResetNextMenu(This) (This)->lpVtbl->ResetNextMenu(This)
 #define ISearchAssistantOC3_FindOnWeb(This) (This)->lpVtbl->FindOnWeb(This)
 #define ISearchAssistantOC3_FindFilesOrFolders(This) (This)->lpVtbl->FindFilesOrFolders(This)
@@ -1968,68 +7204,322 @@
 #define ISearchAssistantOC3_FindPeople(This) (This)->lpVtbl->FindPeople(This)
 #define ISearchAssistantOC3_GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue) (This)->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue)
 #define ISearchAssistantOC3_NotifySearchSettingsChanged(This) (This)->lpVtbl->NotifySearchSettingsChanged(This)
-#define ISearchAssistantOC3_put_ASProvider(This,Provider) (This)->lpVtbl->put_ASProvider(This,Provider)
+#define ISearchAssistantOC3_put_ASProvider(This,pProvider) (This)->lpVtbl->put_ASProvider(This,pProvider)
 #define ISearchAssistantOC3_get_ASProvider(This,pProvider) (This)->lpVtbl->get_ASProvider(This,pProvider)
-#define ISearchAssistantOC3_put_ASSetting(This,Setting) (This)->lpVtbl->put_ASSetting(This,Setting)
+#define ISearchAssistantOC3_put_ASSetting(This,pSetting) (This)->lpVtbl->put_ASSetting(This,pSetting)
 #define ISearchAssistantOC3_get_ASSetting(This,pSetting) (This)->lpVtbl->get_ASSetting(This,pSetting)
 #define ISearchAssistantOC3_NETDetectNextNavigate(This) (This)->lpVtbl->NETDetectNextNavigate(This)
 #define ISearchAssistantOC3_PutFindText(This,FindText) (This)->lpVtbl->PutFindText(This,FindText)
 #define ISearchAssistantOC3_get_Version(This,pVersion) (This)->lpVtbl->get_Version(This,pVersion)
 #define ISearchAssistantOC3_EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult) (This)->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult)
+/*** ISearchAssistantOC2 methods ***/
 #define ISearchAssistantOC3_get_ShowFindPrinter(This,pbShowFindPrinter) (This)->lpVtbl->get_ShowFindPrinter(This,pbShowFindPrinter)
+/*** ISearchAssistantOC3 methods ***/
 #define ISearchAssistantOC3_get_SearchCompanionAvailable(This,pbAvailable) (This)->lpVtbl->get_SearchCompanionAvailable(This,pbAvailable)
-#define ISearchAssistantOC3_put_UseSearchCompanion(This,bUseSC) (This)->lpVtbl->put_UseSearchCompanion(This,bUseSC)
+#define ISearchAssistantOC3_put_UseSearchCompanion(This,pbUseSC) (This)->lpVtbl->put_UseSearchCompanion(This,pbUseSC)
 #define ISearchAssistantOC3_get_UseSearchCompanion(This,pbUseSC) (This)->lpVtbl->get_UseSearchCompanion(This,pbUseSC)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC3_QueryInterface(ISearchAssistantOC3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ISearchAssistantOC3_AddRef(ISearchAssistantOC3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ISearchAssistantOC3_Release(ISearchAssistantOC3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC3_GetTypeInfoCount(ISearchAssistantOC3* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_GetTypeInfo(ISearchAssistantOC3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_GetIDsOfNames(ISearchAssistantOC3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_Invoke(ISearchAssistantOC3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ISearchAssistantOC methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC3_AddNextMenuItem(ISearchAssistantOC3* This,BSTR bstrText,LONG idItem) {
+    return This->lpVtbl->AddNextMenuItem(This,bstrText,idItem);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_SetDefaultSearchUrl(ISearchAssistantOC3* This,BSTR bstrUrl) {
+    return This->lpVtbl->SetDefaultSearchUrl(This,bstrUrl);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_NavigateToDefaultSearch(ISearchAssistantOC3* This) {
+    return This->lpVtbl->NavigateToDefaultSearch(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_IsRestricted(ISearchAssistantOC3* This,BSTR bstrGuid,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->IsRestricted(This,bstrGuid,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_ShellFeaturesEnabled(ISearchAssistantOC3* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_ShellFeaturesEnabled(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_SearchAssistantDefault(ISearchAssistantOC3* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_SearchAssistantDefault(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_Searches(ISearchAssistantOC3* This,ISearches **ppid) {
+    return This->lpVtbl->get_Searches(This,ppid);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_InWebFolder(ISearchAssistantOC3* This,VARIANT_BOOL *pVal) {
+    return This->lpVtbl->get_InWebFolder(This,pVal);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_PutProperty(ISearchAssistantOC3* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR bstrValue) {
+    return This->lpVtbl->PutProperty(This,bPerLocale,bstrName,bstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_GetProperty(ISearchAssistantOC3* This,VARIANT_BOOL bPerLocale,BSTR bstrName,BSTR *pbstrValue) {
+    return This->lpVtbl->GetProperty(This,bPerLocale,bstrName,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_put_EventHandled(ISearchAssistantOC3* This,VARIANT_BOOL rhs) {
+    return This->lpVtbl->put_EventHandled(This,rhs);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_ResetNextMenu(ISearchAssistantOC3* This) {
+    return This->lpVtbl->ResetNextMenu(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_FindOnWeb(ISearchAssistantOC3* This) {
+    return This->lpVtbl->FindOnWeb(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_FindFilesOrFolders(ISearchAssistantOC3* This) {
+    return This->lpVtbl->FindFilesOrFolders(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_FindComputer(ISearchAssistantOC3* This) {
+    return This->lpVtbl->FindComputer(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_FindPrinter(ISearchAssistantOC3* This) {
+    return This->lpVtbl->FindPrinter(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_FindPeople(ISearchAssistantOC3* This) {
+    return This->lpVtbl->FindPeople(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_GetSearchAssistantURL(ISearchAssistantOC3* This,VARIANT_BOOL bSubstitute,VARIANT_BOOL bCustomize,BSTR *pbstrValue) {
+    return This->lpVtbl->GetSearchAssistantURL(This,bSubstitute,bCustomize,pbstrValue);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_NotifySearchSettingsChanged(ISearchAssistantOC3* This) {
+    return This->lpVtbl->NotifySearchSettingsChanged(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_put_ASProvider(ISearchAssistantOC3* This,BSTR pProvider) {
+    return This->lpVtbl->put_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_ASProvider(ISearchAssistantOC3* This,BSTR *pProvider) {
+    return This->lpVtbl->get_ASProvider(This,pProvider);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_put_ASSetting(ISearchAssistantOC3* This,int pSetting) {
+    return This->lpVtbl->put_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_ASSetting(ISearchAssistantOC3* This,int *pSetting) {
+    return This->lpVtbl->get_ASSetting(This,pSetting);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_NETDetectNextNavigate(ISearchAssistantOC3* This) {
+    return This->lpVtbl->NETDetectNextNavigate(This);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_PutFindText(ISearchAssistantOC3* This,BSTR FindText) {
+    return This->lpVtbl->PutFindText(This,FindText);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_Version(ISearchAssistantOC3* This,int *pVersion) {
+    return This->lpVtbl->get_Version(This,pVersion);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_EncodeString(ISearchAssistantOC3* This,BSTR bstrValue,BSTR bstrCharSet,VARIANT_BOOL bUseUTF8,BSTR *pbstrResult) {
+    return This->lpVtbl->EncodeString(This,bstrValue,bstrCharSet,bUseUTF8,pbstrResult);
+}
+/*** ISearchAssistantOC2 methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_ShowFindPrinter(ISearchAssistantOC3* This,VARIANT_BOOL *pbShowFindPrinter) {
+    return This->lpVtbl->get_ShowFindPrinter(This,pbShowFindPrinter);
+}
+/*** ISearchAssistantOC3 methods ***/
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_SearchCompanionAvailable(ISearchAssistantOC3* This,VARIANT_BOOL *pbAvailable) {
+    return This->lpVtbl->get_SearchCompanionAvailable(This,pbAvailable);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_put_UseSearchCompanion(ISearchAssistantOC3* This,VARIANT_BOOL pbUseSC) {
+    return This->lpVtbl->put_UseSearchCompanion(This,pbUseSC);
+}
+static FORCEINLINE HRESULT ISearchAssistantOC3_get_UseSearchCompanion(ISearchAssistantOC3* This,VARIANT_BOOL *pbUseSC) {
+    return This->lpVtbl->get_UseSearchCompanion(This,pbUseSC);
+}
 #endif
 #endif
-  HRESULT WINAPI ISearchAssistantOC3_get_SearchCompanionAvailable_Proxy(ISearchAssistantOC3 *This,VARIANT_BOOL *pbAvailable);
-  void __RPC_STUB ISearchAssistantOC3_get_SearchCompanionAvailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC3_put_UseSearchCompanion_Proxy(ISearchAssistantOC3 *This,VARIANT_BOOL bUseSC);
-  void __RPC_STUB ISearchAssistantOC3_put_UseSearchCompanion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ISearchAssistantOC3_get_UseSearchCompanion_Proxy(ISearchAssistantOC3 *This,VARIANT_BOOL *pbUseSC);
-  void __RPC_STUB ISearchAssistantOC3_get_UseSearchCompanion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC3_get_SearchCompanionAvailable_Proxy(
+    ISearchAssistantOC3* This,
+    VARIANT_BOOL *pbAvailable);
+void __RPC_STUB ISearchAssistantOC3_get_SearchCompanionAvailable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC3_put_UseSearchCompanion_Proxy(
+    ISearchAssistantOC3* This,
+    VARIANT_BOOL pbUseSC);
+void __RPC_STUB ISearchAssistantOC3_put_UseSearchCompanion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISearchAssistantOC3_get_UseSearchCompanion_Proxy(
+    ISearchAssistantOC3* This,
+    VARIANT_BOOL *pbUseSC);
+void __RPC_STUB ISearchAssistantOC3_get_UseSearchCompanion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISearchAssistantOC3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * _SearchAssistantEvents dispinterface
+ */
 #ifndef ___SearchAssistantEvents_DISPINTERFACE_DEFINED__
 #define ___SearchAssistantEvents_DISPINTERFACE_DEFINED__
-  EXTERN_C const IID DIID__SearchAssistantEvents;
+
+DEFINE_GUID(DIID__SearchAssistantEvents, 0x1611fdda, 0x445b, 0x11d2, 0x85,0xde, 0x00,0xc0,0x4f,0xa3,0x5c,0x89);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct _SearchAssistantEvents : public IDispatch {
-  };
+MIDL_INTERFACE("1611fdda-445b-11d2-85de-00c04fa35c89")
+_SearchAssistantEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(_SearchAssistantEvents, 0x1611fdda, 0x445b, 0x11d2, 0x85,0xde, 0x00,0xc0,0x4f,0xa3,0x5c,0x89)
+#endif
 #else
-  typedef struct _SearchAssistantEventsVtbl {
+typedef struct _SearchAssistantEventsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(_SearchAssistantEvents *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(_SearchAssistantEvents *This);
-      ULONG (WINAPI *Release)(_SearchAssistantEvents *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(_SearchAssistantEvents *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(_SearchAssistantEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(_SearchAssistantEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(_SearchAssistantEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        _SearchAssistantEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        _SearchAssistantEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        _SearchAssistantEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        _SearchAssistantEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        _SearchAssistantEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        _SearchAssistantEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        _SearchAssistantEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
     END_INTERFACE
-  } _SearchAssistantEventsVtbl;
-  struct _SearchAssistantEvents {
-    CONST_VTBL struct _SearchAssistantEventsVtbl *lpVtbl;
-  };
+} _SearchAssistantEventsVtbl;
+interface _SearchAssistantEvents {
+    CONST_VTBL _SearchAssistantEventsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define _SearchAssistantEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define _SearchAssistantEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define _SearchAssistantEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define _SearchAssistantEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define _SearchAssistantEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define _SearchAssistantEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define _SearchAssistantEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#endif
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT _SearchAssistantEvents_QueryInterface(_SearchAssistantEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG _SearchAssistantEvents_AddRef(_SearchAssistantEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG _SearchAssistantEvents_Release(_SearchAssistantEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT _SearchAssistantEvents_GetTypeInfoCount(_SearchAssistantEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT _SearchAssistantEvents_GetTypeInfo(_SearchAssistantEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT _SearchAssistantEvents_GetIDsOfNames(_SearchAssistantEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT _SearchAssistantEvents_Invoke(_SearchAssistantEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
 #endif
 #endif
 
-  EXTERN_C const CLSID CLSID_SearchAssistantOC;
+#endif
+
+#endif  /* ___SearchAssistantEvents_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ShellSearchAssistantOC coclass
+ */
+
+DEFINE_GUID(CLSID_ShellSearchAssistantOC, 0x2e71fd0f, 0xaab1, 0x42c0, 0x91,0x46, 0x6d,0x2c,0x4e,0xdc,0xf0,0x7d);
+
 #ifdef __cplusplus
-  class SearchAssistantOC;
+class DECLSPEC_UUID("2e71fd0f-aab1-42c0-9146-6d2c4edcf07d") ShellSearchAssistantOC;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellSearchAssistantOC, 0x2e71fd0f, 0xaab1, 0x42c0, 0x91,0x46, 0x6d,0x2c,0x4e,0xdc,0xf0,0x7d)
 #endif
 #endif
 
+/*****************************************************************************
+ * SearchAssistantOC coclass
+ */
+
+DEFINE_GUID(CLSID_SearchAssistantOC, 0xb45ff030, 0x4447, 0x11d2, 0x85,0xde, 0x00,0xc0,0x4f,0xa3,0x5c,0x89);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("b45ff030-4447-11d2-85de-00c04fa35c89") SearchAssistantOC;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(SearchAssistantOC, 0xb45ff030, 0x4447, 0x11d2, 0x85,0xde, 0x00,0xc0,0x4f,0xa3,0x5c,0x89)
+#endif
+#endif
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
 #ifdef __cplusplus
 }
 #endif
-#endif
+
+#endif /* __exdisp_h__ */
diff --git a/x86_64-w64-mingw32/include/exdispid.h b/x86_64-w64-mingw32/include/exdispid.h
index ad8cffb..012f704 100644
--- a/x86_64-w64-mingw32/include/exdispid.h
+++ b/x86_64-w64-mingw32/include/exdispid.h
@@ -1,123 +1,172 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+/*
+ * Copyright 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
+
 #ifndef EXDISPID_H_
 #define EXDISPID_H_
 
-#define DISPID_BEFORENAVIGATE 100
-#define DISPID_NAVIGATECOMPLETE 101
-#define DISPID_STATUSTEXTCHANGE 102
-#define DISPID_QUIT 103
-#define DISPID_DOWNLOADCOMPLETE 104
-#define DISPID_COMMANDSTATECHANGE 105
-#define DISPID_DOWNLOADBEGIN 106
-#define DISPID_NEWWINDOW 107
-#define DISPID_PROGRESSCHANGE 108
-#define DISPID_WINDOWMOVE 109
-#define DISPID_WINDOWRESIZE 110
-#define DISPID_WINDOWACTIVATE 111
-#define DISPID_PROPERTYCHANGE 112
-#define DISPID_TITLECHANGE 113
-#define DISPID_TITLEICONCHANGE 114
+#define DISPID_BEFORENAVIGATE        100
+#define DISPID_NAVIGATECOMPLETE      101
+#define DISPID_STATUSTEXTCHANGE      102
+#define DISPID_QUIT                  103
+#define DISPID_DOWNLOADCOMPLETE      104
+#define DISPID_COMMANDSTATECHANGE    105
+#define DISPID_DOWNLOADBEGIN         106
+#define DISPID_NEWWINDOW             107
+#define DISPID_PROGRESSCHANGE        108
+#define DISPID_WINDOWMOVE            109
+#define DISPID_WINDOWRESIZE          110
+#define DISPID_WINDOWACTIVATE        111
+#define DISPID_PROPERTYCHANGE        112
+#define DISPID_TITLECHANGE           113
+#define DISPID_TITLEICONCHANGE       114
 
-#define DISPID_FRAMEBEFORENAVIGATE 200
+#define DISPID_FRAMEBEFORENAVIGATE   200
 #define DISPID_FRAMENAVIGATECOMPLETE 201
-#define DISPID_FRAMENEWWINDOW 204
 
-#define DISPID_BEFORENAVIGATE2 250
-#define DISPID_NEWWINDOW2 251
-#define DISPID_NAVIGATECOMPLETE2 252
-#define DISPID_ONQUIT 253
-#define DISPID_ONVISIBLE 254
-#define DISPID_ONTOOLBAR 255
-#define DISPID_ONMENUBAR 256
-#define DISPID_ONSTATUSBAR 257
-#define DISPID_ONFULLSCREEN 258
-#define DISPID_DOCUMENTCOMPLETE 259
-#define DISPID_ONTHEATERMODE 260
-#define DISPID_ONADDRESSBAR 261
-#define DISPID_WINDOWSETRESIZABLE 262
-#define DISPID_WINDOWCLOSING 263
-#define DISPID_WINDOWSETLEFT 264
-#define DISPID_WINDOWSETTOP 265
-#define DISPID_WINDOWSETWIDTH 266
-#define DISPID_WINDOWSETHEIGHT 267
-#define DISPID_CLIENTTOHOSTWINDOW 268
-#define DISPID_SETSECURELOCKICON 269
-#define DISPID_FILEDOWNLOAD 270
-#define DISPID_NAVIGATEERROR 271
+#define DISPID_FRAMENEWWINDOW        204
+
+#define DISPID_BEFORENAVIGATE2       250
+#define DISPID_NEWWINDOW2            251
+#define DISPID_NAVIGATECOMPLETE2     252
+#define DISPID_ONQUIT                253
+#define DISPID_ONVISIBLE             254
+#define DISPID_ONTOOLBAR             255
+#define DISPID_ONMENUBAR             256
+#define DISPID_ONSTATUSBAR           257
+#define DISPID_ONFULLSCREEN          258
+#define DISPID_DOCUMENTCOMPLETE      259
+#define DISPID_ONTHEATERMODE         260
+#define DISPID_ONADDRESSBAR          261
+#define DISPID_WINDOWSETRESIZABLE    262
+#define DISPID_WINDOWCLOSING         263
+#define DISPID_WINDOWSETLEFT         264
+#define DISPID_WINDOWSETTOP          265
+#define DISPID_WINDOWSETWIDTH        266
+#define DISPID_WINDOWSETHEIGHT       267
+#define DISPID_CLIENTTOHOSTWINDOW    268
+#define DISPID_SETSECURELOCKICON     269
+#define DISPID_FILEDOWNLOAD          270
+#define DISPID_NAVIGATEERROR         271
 #define DISPID_PRIVACYIMPACTEDSTATECHANGE 272
-#define DISPID_NEWWINDOW3 273
+#define DISPID_NEWWINDOW3                 273
+#define DISPID_VIEWUPDATE                 281
+#define DISPID_SETPHISHINGFILTERSTATUS    282
+#define DISPID_WINDOWSTATECHANGED         283
+#define DISPID_NEWPROCESS                 284
+#define DISPID_THIRDPARTYURLBLOCKED       285
+#define DISPID_REDIRECTXDOMAINBLOCKED     286
 
 #define DISPID_PRINTTEMPLATEINSTANTIATION 225
-#define DISPID_PRINTTEMPLATETEARDOWN 226
-#define DISPID_UPDATEPAGESTATUS 227
+#define DISPID_PRINTTEMPLATETEARDOWN      226
+#define DISPID_UPDATEPAGESTATUS           227
 
 #define DISPID_WINDOWREGISTERED 200
-#define DISPID_WINDOWREVOKED 201
+#define DISPID_WINDOWREVOKED    201
 
-#define DISPID_RESETFIRSTBOOTMODE 1
-#define DISPID_RESETSAFEMODE 2
+#define DISPID_RESETFIRSTBOOTMODE    1
+#define DISPID_RESETSAFEMODE         2
 #define DISPID_REFRESHOFFLINEDESKTOP 3
-#define DISPID_ADDFAVORITE 4
-#define DISPID_ADDCHANNEL 5
-#define DISPID_ADDDESKTOPCOMPONENT 6
-#define DISPID_ISSUBSCRIBED 7
-#define DISPID_NAVIGATEANDFIND 8
+#define DISPID_ADDFAVORITE           4
+#define DISPID_ADDCHANNEL            5
+#define DISPID_ADDDESKTOPCOMPONENT   6
+#define DISPID_ISSUBSCRIBED          7
+#define DISPID_NAVIGATEANDFIND       8
 #define DISPID_IMPORTEXPORTFAVORITES 9
-#define DISPID_AUTOCOMPLETESAVEFORM 10
-#define DISPID_AUTOSCAN 11
-#define DISPID_AUTOCOMPLETEATTACH 12
-#define DISPID_SHOWBROWSERUI 13
-#define DISPID_SHELLUIHELPERLAST 13
+#define DISPID_AUTOCOMPLETESAVEFORM  10
+#define DISPID_AUTOSCAN              11
+#define DISPID_AUTOCOMPLETEATTACH    12
+#define DISPID_SHOWBROWSERUI         13
+#define DISPID_ADDSEARCHPROVIDER     14
+#define DISPID_RUNONCESHOWN          15
+#define DISPID_SKIPRUNONCE           16
+#define DISPID_CUSTOMIZESETTINGS     17
+#define DISPID_SQMENABLED            18
+#define DISPID_PHISHINGENABLED       19
+#define DISPID_BRANDIMAGEURI         20
+#define DISPID_SKIPTABSWELCOME       21
+#define DISPID_DIAGNOSECONNECTION    22
+#define DISPID_CUSTOMIZECLEARTYPE    23
+#define DISPID_ISSEARCHPROVIDERINSTALLED  24
+#define DISPID_ISSEARCHMIGRATED      25
+#define DISPID_DEFAULTSEARCHPROVIDER 26
+#define DISPID_RUNONCEREQUIREDSETTINGSCOMPLETE  27
+#define DISPID_RUNONCEHASSHOWN       28
+#define DISPID_SEARCHGUIDEURL        29
+#define DISPID_ADDSERVICE            30
+#define DISPID_ISSERVICEINSTALLED    31
+#define DISPID_ADDTOFAVORITESBAR     32
+#define DISPID_BUILDNEWTABPAGE       33
+#define DISPID_SETRECENTLYCLOSEDVISIBLE   34
+#define DISPID_SETACTIVITIESVISIBLE       35
+#define DISPID_CONTENTDISCOVERYRESET      36
+#define DISPID_INPRIVATEFILTERINGENABLED  37
+#define DISPID_SUGGESTEDSITESENABLED      38
+#define DISPID_ENABLESUGGESTEDSITES       39
+#define DISPID_NAVIGATETOSUGGESTEDSITES   40
+#define DISPID_SHOWTABSHELP               41
+#define DISPID_SHOWINPRIVATEHELP          42
+#define DISPID_SHELLUIHELPERLAST          43
 
-#define DISPID_ADVANCEERROR 10
-#define DISPID_RETREATERROR 11
-#define DISPID_CANADVANCEERROR 12
-#define DISPID_CANRETREATERROR 13
-#define DISPID_GETERRORLINE 14
-#define DISPID_GETERRORCHAR 15
-#define DISPID_GETERRORCODE 16
-#define DISPID_GETERRORMSG 17
-#define DISPID_GETERRORURL 18
-#define DISPID_GETDETAILSSTATE 19
-#define DISPID_SETDETAILSSTATE 20
-#define DISPID_GETPERERRSTATE 21
-#define DISPID_SETPERERRSTATE 22
-#define DISPID_GETALWAYSSHOWLOCKSTATE 23
+#define DISPID_ADVANCEERROR            10
+#define DISPID_RETREATERROR            11
+#define DISPID_CANADVANCEERROR         12
+#define DISPID_CANRETREATERROR         13
+#define DISPID_GETERRORLINE            14
+#define DISPID_GETERRORCHAR            15
+#define DISPID_GETERRORCODE            16
+#define DISPID_GETERRORMSG             17
+#define DISPID_GETERRORURL             18
+#define DISPID_GETDETAILSSTATE         19
+#define DISPID_SETDETAILSSTATE         20
+#define DISPID_GETPERERRSTATE          21
+#define DISPID_SETPERERRSTATE          22
+#define DISPID_GETALWAYSSHOWLOCKSTATE  23
 
-#define DISPID_FAVSELECTIONCHANGE 1
-#define DISPID_SELECTIONCHANGE 2
-#define DISPID_DOUBLECLICK 3
-#define DISPID_INITIALIZED 4
+#define DISPID_FAVSELECTIONCHANGE  1
+#define DISPID_SELECTIONCHANGE     2
+#define DISPID_DOUBLECLICK         3
+#define DISPID_INITIALIZED         4
 
-#define DISPID_MOVESELECTIONUP 1
-#define DISPID_MOVESELECTIONDOWN 2
-#define DISPID_RESETSORT 3
-#define DISPID_NEWFOLDER 4
-#define DISPID_SYNCHRONIZE 5
-#define DISPID_IMPORT 6
-#define DISPID_EXPORT 7
-#define DISPID_INVOKECONTEXTMENU 8
-#define DISPID_MOVESELECTIONTO 9
-#define DISPID_SUBSCRIPTIONSENABLED 10
-#define DISPID_CREATESUBSCRIPTION 11
-#define DISPID_DELETESUBSCRIPTION 12
-#define DISPID_SETROOT 13
-#define DISPID_ENUMOPTIONS 14
-#define DISPID_SELECTEDITEM 15
-#define DISPID_ROOT 16
-#define DISPID_DEPTH 17
-#define DISPID_MODE 18
-#define DISPID_FLAGS 19
-#define DISPID_TVFLAGS 20
-#define DISPID_NSCOLUMNS 21
-#define DISPID_COUNTVIEWTYPES 22
-#define DISPID_SETVIEWTYPE 23
-#define DISPID_SELECTEDITEMS 24
-#define DISPID_EXPAND 25
-#define DISPID_UNSELECTALL 26
+#define DISPID_MOVESELECTIONUP       1
+#define DISPID_MOVESELECTIONDOWN     2
+#define DISPID_RESETSORT             3
+#define DISPID_NEWFOLDER             4
+#define DISPID_SYNCHRONIZE           5
+#define DISPID_IMPORT                6
+#define DISPID_EXPORT                7
+#define DISPID_INVOKECONTEXTMENU     8
+#define DISPID_MOVESELECTIONTO       9
+#define DISPID_SUBSCRIPTIONSENABLED  10
+#define DISPID_CREATESUBSCRIPTION    11
+#define DISPID_DELETESUBSCRIPTION    12
+#define DISPID_SETROOT               13
+#define DISPID_ENUMOPTIONS           14
+#define DISPID_SELECTEDITEM          15
+#define DISPID_ROOT                  16
+#define DISPID_DEPTH                 17
+#define DISPID_MODE                  18
+#define DISPID_FLAGS                 19
+#define DISPID_TVFLAGS               20
+#define DISPID_NSCOLUMNS             21
+#define DISPID_COUNTVIEWTYPES        22
+#define DISPID_SETVIEWTYPE           23
+#define DISPID_SELECTEDITEMS         24
+#define DISPID_EXPAND                25
+#define DISPID_UNSELECTALL           26
 
-#endif
+#endif /* EXDISPID_H_ */
diff --git a/x86_64-w64-mingw32/include/fsrm.h b/x86_64-w64-mingw32/include/fsrm.h
index d282bfc..7d78b4a 100644
--- a/x86_64-w64-mingw32/include/fsrm.h
+++ b/x86_64-w64-mingw32/include/fsrm.h
@@ -471,8 +471,8 @@
         BSTR accessPath,
         AdrClientErrorType errorType,
         LONG flags,
-        BSTR windowTitle = L"",
-        BSTR windowMessage = L"",
+        BSTR windowTitle,
+        BSTR windowMessage,
         LONG *result) = 0;
 
 };
@@ -2116,8 +2116,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE ImportFileGroups(
         BSTR filePath,
-        VARIANT *fileGroupNamesSafeArray = 0,
-        BSTR remoteHost = L"",
+        VARIANT *fileGroupNamesSafeArray,
+        BSTR remoteHost,
         IFsrmCommittableCollection **fileGroups) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ExportFileScreenTemplates(
@@ -2127,8 +2127,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE ImportFileScreenTemplates(
         BSTR filePath,
-        VARIANT *templateNamesSafeArray = 0,
-        BSTR remoteHost = L"",
+        VARIANT *templateNamesSafeArray,
+        BSTR remoteHost,
         IFsrmCommittableCollection **templates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ExportQuotaTemplates(
@@ -2138,8 +2138,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE ImportQuotaTemplates(
         BSTR filePath,
-        VARIANT *templateNamesSafeArray = 0,
-        BSTR remoteHost = L"",
+        VARIANT *templateNamesSafeArray,
+        BSTR remoteHost,
         IFsrmCommittableCollection **templates) = 0;
 
 };
diff --git a/x86_64-w64-mingw32/include/fsrmquota.h b/x86_64-w64-mingw32/include/fsrmquota.h
index 5740141..757790a 100644
--- a/x86_64-w64-mingw32/include/fsrmquota.h
+++ b/x86_64-w64-mingw32/include/fsrmquota.h
@@ -183,18 +183,18 @@
         IFsrmQuota **quota) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumQuotas(
-        BSTR path = L"",
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        BSTR path,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **quotas) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumAutoApplyQuotas(
-        BSTR path = L"",
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        BSTR path,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **quotas) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumEffectiveQuotas(
         BSTR path,
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **quotas) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Scan(
@@ -536,20 +536,20 @@
         IFsrmQuotaTemplate **quotaTemplate) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetTemplate(
-        BSTR name = L"",
+        BSTR name,
         IFsrmQuotaTemplate **quotaTemplate) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumTemplates(
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **quotaTemplates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ExportTemplates(
-        VARIANT *quotaTemplateNamesArray = 0,
+        VARIANT *quotaTemplateNamesArray,
         BSTR *serializedQuotaTemplates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ImportTemplates(
         BSTR serializedQuotaTemplates,
-        VARIANT *quotaTemplateNamesArray = 0,
+        VARIANT *quotaTemplateNamesArray,
         IFsrmCommittableCollection **quotaTemplates) = 0;
 
 };
@@ -2529,7 +2529,7 @@
 {
     virtual HRESULT STDMETHODCALLTYPE IsAffectedByQuota(
         BSTR path,
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         VARIANT_BOOL *affected) = 0;
 
 };
diff --git a/x86_64-w64-mingw32/include/fsrmreports.h b/x86_64-w64-mingw32/include/fsrmreports.h
index fef2e9e..eb8c099 100644
--- a/x86_64-w64-mingw32/include/fsrmreports.h
+++ b/x86_64-w64-mingw32/include/fsrmreports.h
@@ -634,7 +634,7 @@
         SAFEARRAY **descriptions) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumFileManagementJobs(
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCollection **fileManagementJobs) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateFileManagementJob(
@@ -1086,7 +1086,7 @@
 IFsrmReportManager : public IDispatch
 {
     virtual HRESULT STDMETHODCALLTYPE EnumReportJobs(
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCollection **reportJobs) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateReportJob(
diff --git a/x86_64-w64-mingw32/include/fsrmscreen.h b/x86_64-w64-mingw32/include/fsrmscreen.h
index 8b71306..4f01ac9 100644
--- a/x86_64-w64-mingw32/include/fsrmscreen.h
+++ b/x86_64-w64-mingw32/include/fsrmscreen.h
@@ -169,16 +169,16 @@
         IFsrmFileGroup **fileGroup) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumFileGroups(
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **fileGroups) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ExportFileGroups(
-        VARIANT *fileGroupNamesArray = 0,
+        VARIANT *fileGroupNamesArray,
         BSTR *serializedFileGroups) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ImportFileGroups(
         BSTR serializedFileGroups,
-        VARIANT *fileGroupNamesArray = 0,
+        VARIANT *fileGroupNamesArray,
         IFsrmCommittableCollection **fileGroups) = 0;
 
 };
@@ -399,8 +399,8 @@
         IFsrmFileScreen **fileScreen) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumFileScreens(
-        BSTR path = L"",
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        BSTR path,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **fileScreens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateFileScreenException(
@@ -412,8 +412,8 @@
         IFsrmFileScreenException **fileScreenException) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumFileScreenExceptions(
-        BSTR path = L"",
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        BSTR path,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **fileScreenExceptions) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateFileScreenCollection(
@@ -700,16 +700,16 @@
         IFsrmFileScreenTemplate **fileScreenTemplate) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumTemplates(
-        FsrmEnumOptions options = FsrmEnumOptions_None,
+        FsrmEnumOptions options,
         IFsrmCommittableCollection **fileScreenTemplates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ExportTemplates(
-        VARIANT *fileScreenTemplateNamesArray = 0,
+        VARIANT *fileScreenTemplateNamesArray,
         BSTR *serializedFileScreenTemplates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ImportTemplates(
         BSTR serializedFileScreenTemplates,
-        VARIANT *fileScreenTemplateNamesArray = 0,
+        VARIANT *fileScreenTemplateNamesArray,
         IFsrmCommittableCollection **fileScreenTemplates) = 0;
 
 };
diff --git a/x86_64-w64-mingw32/include/infstr.h b/x86_64-w64-mingw32/include/infstr.h
new file mode 100644
index 0000000..879f8a8
--- /dev/null
+++ b/x86_64-w64-mingw32/include/infstr.h
@@ -0,0 +1,20 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC_INFSTR
+#define _INC_INFSTR
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+
+#define INFSTR_SECT_VERSION TEXT("Version")
+#define INFSTR_KEY_PROVIDER TEXT("Provider")
+#define INFSTR_KEY_HARDWARE_CLASSGUID TEXT("ClassGUID")
+#define INFSTR_DRIVERVERSION_SECTION TEXT("DriverVer")
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/intsafe.h b/x86_64-w64-mingw32/include/intsafe.h
new file mode 100644
index 0000000..5764d4e
--- /dev/null
+++ b/x86_64-w64-mingw32/include/intsafe.h
@@ -0,0 +1,405 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INTSAFE_H_INCLUDED_
+#define _INTSAFE_H_INCLUDED_
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+
+#include <wtypesbase.h>
+#include <specstrings.h>
+
+#define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216)
+
+#ifndef S_OK
+#define S_OK ((HRESULT)0)
+#endif
+
+#ifdef __clang__
+#if __has_builtin(__builtin_add_overflow)
+#define __MINGW_INTSAFE_WORKS
+#endif
+#elif __GNUC__ >= 5
+#define __MINGW_INTSAFE_WORKS
+#endif
+
+#ifdef __MINGW_INTSAFE_WORKS
+
+#ifndef __MINGW_INTSAFE_API
+#define __MINGW_INTSAFE_API FORCEINLINE
+#endif
+
+/** If CHAR is unsigned, use static inline for functions that operate
+on chars.  This avoids the risk of linking to the wrong function when
+different translation units with different types of chars are linked
+together, and code using signed chars will not be affected. */
+#ifndef __MINGW_INTSAFE_CHAR_API
+#ifdef __CHAR_UNSIGNED__
+#define __MINGW_INTSAFE_CHAR_API static inline
+#else
+#define __MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_API
+#endif
+#endif
+
+#define __MINGW_INTSAFE_BODY(operation, x, y) \
+{ \
+  if (__builtin_##operation##_overflow(x, y, result)) \
+  { \
+      *result = 0; \
+      return INTSAFE_E_ARITHMETIC_OVERFLOW; \
+  } \
+  return S_OK; \
+}
+
+#define __MINGW_INTSAFE_CONV(name, type_src, type_dest) \
+    HRESULT name(type_src operand, type_dest * result) \
+    __MINGW_INTSAFE_BODY(add, operand, 0)
+
+#define __MINGW_INTSAFE_MATH(name, type, operation) \
+    HRESULT name(type x, type y, type * result) \
+    __MINGW_INTSAFE_BODY(operation, x, y)
+
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UInt8ToInt8, UINT8, INT8)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(UInt8ToChar, UINT8, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ByteToInt8, BYTE, INT8)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(ByteToChar, BYTE, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUChar, INT8, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUInt8, INT8, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUShort, INT8, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUInt, INT8, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULong, INT8, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUIntPtr, INT8, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULongPtr, INT8, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULongLong, INT8, ULONGLONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToUChar, USHORT, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToUInt8, USHORT, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToByte, USHORT, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToInt8, USHORT, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToShort, USHORT, SHORT)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(UShortToChar, USHORT, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(WordToUChar, WORD, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(WordToByte, WORD, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(WordToShort, WORD, SHORT)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(WordToChar, WORD, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUChar, SHORT, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUInt8, SHORT, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToByte, SHORT, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToInt8, SHORT, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUShort, SHORT, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToWord, SHORT, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUInt, SHORT, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULong, SHORT, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUIntPtr, SHORT, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULongPtr, SHORT, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToDWordPtr, SHORT, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULongLong, SHORT, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(ShortToChar, SHORT, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToUChar, UINT, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToUInt8, UINT, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToByte, UINT, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToInt8, UINT, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToUShort, UINT, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToWord, UINT, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToShort, UINT, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToLong, UINT, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToInt, UINT, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToIntPtr, UINT, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToPtrdiffT, UINT, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToLongPtr, UINT, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToSSIZET, UINT, SSIZE_T)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(UIntToChar, UINT, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUChar, ULONG, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUInt8, ULONG, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToByte, ULONG, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToInt8, ULONG, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUShort, ULONG, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToWord, ULONG, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToShort, ULONG, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUInt, ULONG, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToLong, ULONG, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToInt, ULONG, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUIntPtr, ULONG, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToIntPtr, ULONG, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToPtrdiffT, ULONG, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToLongPtr, ULONG, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToSSIZET, ULONG, SSIZE_T)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(ULongToChar, ULONG, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUChar, DWORD, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToByte, DWORD, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUShort, DWORD, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToWord, DWORD, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToShort, DWORD, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUInt, DWORD, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToLong, DWORD, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToInt, DWORD, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUIntPtr, DWORD, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToIntPtr, DWORD, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToPtrdiffT, DWORD, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToLongPtr, DWORD, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToSSIZET, DWORD, SSIZE_T)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(DWordToChar, DWORD, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUChar, LONG, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUInt8, LONG, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToByte, LONG, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToInt8, LONG, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUShort, LONG, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToWord, LONG, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToShort, LONG, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUInt, LONG, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULong, LONG, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToDWord, LONG, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToInt, LONG, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUIntPtr, LONG, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToSizeT, LONG, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULongPtr, LONG, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToDWordPtr, LONG, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToIntPtr, LONG, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToPtrdiffT, LONG, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULongLong, LONG, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(LongToChar, LONG, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUChar, INT, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUInt8, INT, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToByte, INT, BYTE)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToInt8, INT, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUShort, INT, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToWord, INT, WORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToShort, INT, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUInt, INT, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULong, INT, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToDWord, INT, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUIntPtr, INT, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToSizeT, INT, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULongPtr, INT, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToDWordPtr, INT, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULongLong, INT, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(IntToChar, INT, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUChar, UINT_PTR, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt8, UINT_PTR, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt8, UINT_PTR, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt16, UINT_PTR, UINT16)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUShort, UINT_PTR, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt16, UINT_PTR, INT16)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToShort, UINT_PTR, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt, UINT_PTR, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToULong, UINT_PTR, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToDWord, UINT_PTR, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLong, UINT_PTR, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt, UINT_PTR, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToIntPtr, UINT_PTR, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLongPtr, UINT_PTR, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToSSIZET, UINT_PTR, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt64, UINT_PTR, INT64)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLongLong, UINT_PTR, LONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(UIntPtrToChar, UINT_PTR, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToUInt, size_t, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToULong, size_t, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToDWord, size_t, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToLong, size_t, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToInt, size_t, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToIntPtr, size_t, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToPtrdiffT, size_t, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToLongPtr, size_t, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToSSIZET, size_t, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToInt64, size_t, INT64)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUChar, ULONG_PTR, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUInt8, ULONG_PTR, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt8, ULONG_PTR, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUShort, ULONG_PTR, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToShort, ULONG_PTR, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUInt, ULONG_PTR, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToULong, ULONG_PTR, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToDWord, ULONG_PTR, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLong, ULONG_PTR, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt, ULONG_PTR, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUIntPtr, ULONG_PTR, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToIntPtr, ULONG_PTR, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToPtrdiffT, ULONG_PTR, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLongPtr, ULONG_PTR, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToSSIZET, ULONG_PTR, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt64, ULONG_PTR, INT64)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLongLong, ULONG_PTR, LONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(ULongPtrToChar, ULONG_PTR, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToUInt, DWORD_PTR, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToULong, DWORD_PTR, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToDWord, DWORD_PTR, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToLong, DWORD_PTR, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToInt, DWORD_PTR, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToUIntPtr, DWORD_PTR, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToIntPtr, DWORD_PTR, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToPtrdiffT, DWORD_PTR, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToLongPtr, DWORD_PTR, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToSSIZET, DWORD_PTR, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToInt64, DWORD_PTR, INT64)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUChar, INT_PTR, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUInt8, INT_PTR, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToInt8, INT_PTR, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUShort, INT_PTR, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToShort, INT_PTR, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUInt, INT_PTR, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULong, INT_PTR, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToDWord, INT_PTR, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToLong, INT_PTR, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToInt, INT_PTR, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUIntPtr, INT_PTR, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToSizeT, INT_PTR, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULongPtr, INT_PTR, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToDWordPtr, INT_PTR, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToLongPtr, INT_PTR, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULongLong, INT_PTR, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(IntPtrToChar, INT_PTR, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToUInt, ptrdiff_t, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToULong, ptrdiff_t, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToDWord, ptrdiff_t, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToLong, ptrdiff_t, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToInt, ptrdiff_t, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToUIntPtr, ptrdiff_t, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToSizeT, ptrdiff_t, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToULongPtr, ptrdiff_t, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToDWordPtr, ptrdiff_t, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUChar, LONG_PTR, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUInt8, LONG_PTR, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToInt8, LONG_PTR, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUShort, LONG_PTR, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToShort, LONG_PTR, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUInt, LONG_PTR, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULong, LONG_PTR, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToDWord, LONG_PTR, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToLong, LONG_PTR, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToInt, LONG_PTR, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUIntPtr, LONG_PTR, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToSizeT, LONG_PTR, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULongPtr, LONG_PTR, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToDWordPtr, LONG_PTR, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToIntPtr, LONG_PTR, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULongLong, LONG_PTR, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(LongPtrToChar, LONG_PTR, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToUInt, SSIZE_T, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToULong, SSIZE_T, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToDWord, SSIZE_T, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToLong, SSIZE_T, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToInt, SSIZE_T, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToUIntPtr, SSIZE_T, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToSizeT, SSIZE_T, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToULongPtr, SSIZE_T, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToDWordPtr, SSIZE_T, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToIntPtr, SSIZE_T, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUChar, ULONGLONG, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUInt8, ULONGLONG, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt8, ULONGLONG, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUShort, ULONGLONG, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToShort, ULONGLONG, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUInt, ULONGLONG, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToULong, ULONGLONG, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToDWord, ULONGLONG, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLong, ULONGLONG, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt, ULONGLONG, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUIntPtr, ULONGLONG, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToSizeT, ULONGLONG, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToULongPtr, ULONGLONG, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToDWordPtr, ULONGLONG, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToIntPtr, ULONGLONG, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToPtrdiffT, ULONGLONG, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLongPtr, ULONGLONG, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToSSIZET, ULONGLONG, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt64, ULONGLONG, INT64)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLongLong, ULONGLONG, LONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(ULongLongToChar, ULONGLONG, CHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToUInt, INT64, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULong, INT64, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToDWord, INT64, DWORD)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToLong, INT64, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToInt, INT64, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToUIntPtr, INT64, UINT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToSizeT, INT64, size_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULongPtr, INT64, ULONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToDWordPtr, INT64, DWORD_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToIntPtr, INT64, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToPtrdiffT, INT64, ptrdiff_t)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToLongPtr, INT64, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToSSIZET, INT64, SSIZE_T)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULongLong, INT64, ULONGLONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUChar, LONGLONG, UCHAR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUInt8, LONGLONG, UINT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToInt8, LONGLONG, INT8)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUShort, LONGLONG, USHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToShort, LONGLONG, SHORT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUInt, LONGLONG, UINT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToULong, LONGLONG, ULONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToLong, LONGLONG, LONG)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToInt, LONGLONG, INT)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToIntPtr, LONGLONG, INT_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToLongPtr, LONGLONG, LONG_PTR)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToULongLong, LONGLONG, ULONGLONG)
+__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV(LongLongToChar, LONGLONG, CHAR)
+
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Add, UINT8, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Add, INT8, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortAdd, USHORT, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordAdd, WORD, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortAdd, SHORT, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntAdd, UINT, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongAdd, ULONG, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordAdd, DWORD, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongAdd, LONG, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntAdd, INT, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrAdd, UINT_PTR, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTAdd, size_t, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrAdd, ULONG_PTR, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrAdd, DWORD_PTR, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrAdd, INT_PTR, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTAdd, ptrdiff_t, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrAdd, LONG_PTR, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETAdd, SSIZE_T, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongAdd, ULONGLONG, add)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongAdd, LONGLONG, add)
+
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Sub, UINT8, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Sub, INT8, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortSub, USHORT, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordSub, WORD, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortSub, SHORT, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntSub, UINT, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongSub, ULONG, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordSub, DWORD, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongSub, LONG, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntSub, INT, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrSub, UINT_PTR, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTSub, size_t, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrSub, ULONG_PTR, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrSub, DWORD_PTR, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrSub, INT_PTR, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTSub, ptrdiff_t, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrSub, LONG_PTR, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETSub, SSIZE_T, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongSub, ULONGLONG, sub)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongSub, LONGLONG, sub)
+
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Mult, UINT8, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Mult, INT8, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortMult, USHORT, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordMult, WORD, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortMult, SHORT, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntMult, UINT, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongMult, ULONG, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordMult, DWORD, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongMult, LONG, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntMult, INT, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrMult, UINT_PTR, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTMult, size_t, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrMult, ULONG_PTR, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrMult, DWORD_PTR, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrMult, INT_PTR, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTMult, ptrdiff_t, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrMult, LONG_PTR, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETMult, SSIZE_T, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongMult, ULONGLONG, mul)
+__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongMult, LONGLONG, mul)
+
+#endif /* __GNUC__ >= 5 */
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
+#endif /* _INTSAFE_H_INCLUDED_ */
diff --git a/x86_64-w64-mingw32/include/io.h b/x86_64-w64-mingw32/include/io.h
index b68393a..c61e94a 100644
--- a/x86_64-w64-mingw32/include/io.h
+++ b/x86_64-w64-mingw32/include/io.h
@@ -176,8 +176,10 @@
 #define	R_OK	4	/* Check for read permission */
 
   _CRTIMP int __cdecl _access(const char *_Filename,int _AccessMode);
+  _CRTIMP errno_t __cdecl _access_s(const char *_Filename,int _AccessMode);
   _CRTIMP int __cdecl _chmod(const char *_Filename,int _Mode);
   _CRTIMP int __cdecl _chsize(int _FileHandle,long _Size) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl _chsize_s (int _FileHandle,__int64 _Size);
   _CRTIMP int __cdecl _close(int _FileHandle);
   _CRTIMP int __cdecl _commit(int _FileHandle);
   _CRTIMP int __cdecl _creat(const char *_Filename,int _PermissionMode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
@@ -193,6 +195,7 @@
   _CRTIMP long __cdecl _lseek(int _FileHandle,long _Offset,int _Origin);
   _off64_t lseek64(int fd,_off64_t offset, int whence);
   _CRTIMP char *__cdecl _mktemp(char *_TemplateName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl _mktemp_s (char *_TemplateName,size_t _Size);
   _CRTIMP int __cdecl _pipe(int *_PtHandles,unsigned int _PipeSize,int _TextMode);
   _CRTIMP int __cdecl _read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount);
 
@@ -209,6 +212,7 @@
   _CRTIMP int __cdecl _setmode(int _FileHandle,int _Mode);
   _CRTIMP long __cdecl _tell(int _FileHandle);
   _CRTIMP int __cdecl _umask(int _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl _umask_s (int _NewMode,int *_OldMode);
   _CRTIMP int __cdecl _write(int _FileHandle,const void *_Buf,unsigned int _MaxCharCount);
 
   __MINGW_EXTENSION _CRTIMP __int64 __cdecl _filelengthi64(int _FileHandle);
@@ -279,6 +283,7 @@
 #ifndef _WIO_DEFINED
 #define _WIO_DEFINED
   _CRTIMP int __cdecl _waccess(const wchar_t *_Filename,int _AccessMode);
+  _CRTIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int _AccessMode);
   _CRTIMP int __cdecl _wchmod(const wchar_t *_Filename,int _Mode);
   _CRTIMP int __cdecl _wcreat(const wchar_t *_Filename,int _PermissionMode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   _CRTIMP intptr_t __cdecl _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData);
@@ -286,6 +291,7 @@
   _CRTIMP int __cdecl _wunlink(const wchar_t *_Filename);
   _CRTIMP int __cdecl _wrename(const wchar_t *_OldFilename,const wchar_t *_NewFilename);
   _CRTIMP wchar_t *__cdecl _wmktemp(wchar_t *_TemplateName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName, size_t _SizeInWords);
 
   _CRTIMP intptr_t __cdecl _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData);
   intptr_t __cdecl _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData);
@@ -365,7 +371,5 @@
 
 #pragma pack(pop)
 
-#include <sec_api/io_s.h>
-
 #endif /* End _IO_H_ */
 
diff --git a/x86_64-w64-mingw32/include/limits.h b/x86_64-w64-mingw32/include/limits.h
index 73dca2a..f0145df 100644
--- a/x86_64-w64-mingw32/include/limits.h
+++ b/x86_64-w64-mingw32/include/limits.h
@@ -24,8 +24,13 @@
 #define SCHAR_MAX 127
 #define UCHAR_MAX 0xff
 
+#ifdef __CHAR_UNSIGNED__
+#define CHAR_MIN 0
+#define CHAR_MAX UCHAR_MAX
+#else
 #define CHAR_MIN SCHAR_MIN
 #define CHAR_MAX SCHAR_MAX
+#endif
 
 #define MB_LEN_MAX 5
 #define SHRT_MIN (-32768)
diff --git a/x86_64-w64-mingw32/include/magnification.h b/x86_64-w64-mingw32/include/magnification.h
new file mode 100644
index 0000000..649948a
--- /dev/null
+++ b/x86_64-w64-mingw32/include/magnification.h
@@ -0,0 +1,37 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC_MAGNIFIER
+#define _INC_MAGNIFIER
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <wincodec.h>
+
+#define MW_FILTERMODE_EXCLUDE 0
+#define MW_FILTERMODE_INCLUDE 1
+
+typedef struct tagMAGTRANSFORM {
+    float v[3][3];
+} MAGTRANSFORM, *PMAGTRANSFORM;
+
+typedef struct tagMAGIMAGEHEADER {
+    UINT width;
+    UINT height;
+    WICPixelFormatGUID format;
+    UINT stride;
+    UINT offset;
+    SIZE_T cbSize;
+} MAGIMAGEHEADER, *PMAGIMAGEHEADER;
+
+typedef struct tagMAGCOLOREFFECT {
+    float transform[5][5];
+} MAGCOLOREFFECT, *PMAGCOLOREFFECT;
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/math.h b/x86_64-w64-mingw32/include/math.h
index 069e734..b06ca79 100644
--- a/x86_64-w64-mingw32/include/math.h
+++ b/x86_64-w64-mingw32/include/math.h
@@ -36,7 +36,7 @@
 #endif
 #endif
 
-#if !defined(__STRICT_ANSI__) || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_USE_MATH_DEFINES)
+#if !defined(__STRICT_ANSI__) || defined(_POSIX_C_SOURCE) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_USE_MATH_DEFINES)
 #define M_E		2.7182818284590452354
 #define M_LOG2E		1.4426950408889634074
 #define M_LOG10E	0.43429448190325182765
@@ -207,7 +207,7 @@
 #if !defined (__ia64__)
   __CRT_INLINE float __cdecl fabsf (float x)
   {
-#ifdef __x86_64__
+#if defined(__x86_64__) || defined(__arm__)
     return __builtin_fabsf (x);
 #else
     float res = 0.0F;
@@ -218,14 +218,18 @@
 
   __CRT_INLINE long double __cdecl fabsl (long double x)
   {
+#ifdef __arm__
+    return __builtin_fabsl (x);
+#else
     long double res = 0.0l;
     __asm__ __volatile__ ("fabs;" : "=t" (res) : "0" (x));
     return res;
+#endif
   }
 
   __CRT_INLINE double __cdecl fabs (double x)
   {
-#ifdef __x86_64__
+#if defined(__x86_64__) || defined(__arm__)
     return __builtin_fabs (x);
 #else
     double res = 0.0;
@@ -424,20 +428,7 @@
               FP_INFINITE : FP_NAN);
     return FP_NORMAL;
 #elif defined(__arm__) || defined(_ARM_)
-    __mingw_fp_types_t hlp;
-    unsigned int l, h;
-
-    hlp.d = &x;
-    h = hlp.ldt->lh.high;
-    l = hlp.ldt->lh.low | (h & 0xfffff);
-    h &= 0x7ff00000;
-    if ((h | l) == 0)
-      return FP_ZERO;
-    if (!h)
-      return FP_SUBNORMAL;
-    if (h == 0x7ff00000)
-      return (l ? FP_NAN : FP_INFINITE);
-    return FP_NORMAL;
+    return __fpclassify(x);
 #elif defined(__i386__) || defined(_X86_)
     unsigned short sw;
     __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
@@ -584,15 +575,7 @@
     signexp = 0xfffe - signexp;
     return (int) ((unsigned int) signexp) >> 16;
 #elif defined(__arm__) || defined(_ARM_)
-    __mingw_fp_types_t hlp;
-    int l, h;
-
-    hlp.d = &_x;
-    l = hlp.dt->lh.low;
-    h = hlp.dt->lh.high & 0x7fffffff;
-    h |= (unsigned int) (l | -l) >> 31;
-    h = 0x7ff00000 - h;
-    return (int) ((unsigned int) h) >> 31;
+    __isnan(_x);
 #elif defined(__i386__) || defined(_X86_)
     unsigned short sw;
     __asm__ __volatile__ ("fxam;"
@@ -656,10 +639,7 @@
     ld.ld = &x;
     return ((ld.ldt->lh.sign_exponent & 0x8000) != 0);
 #elif defined(__arm__) || defined(_ARM_)
-    __mingw_fp_types_t hlp;
-
-    hlp.d = &x;
-    return ((hlp.dt->lh.high & 0x80000000) != 0);
+    __signbit(x);
 #elif defined(__i386__) || defined(_X86_)
     unsigned short stw;
     __asm__ __volatile__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
diff --git a/x86_64-w64-mingw32/include/mediaobj.idl b/x86_64-w64-mingw32/include/mediaobj.idl
index cf7bb7a..04c82e8 100644
--- a/x86_64-w64-mingw32/include/mediaobj.idl
+++ b/x86_64-w64-mingw32/include/mediaobj.idl
@@ -19,12 +19,10 @@
 
 import "unknwn.idl";
 import "objidl.idl";
+import "strmif.idl";
 
 interface IDMOQualityControl;
 interface IDMOVideoOutputOptimizations;
-interface IMediaBuffer;
-interface IMediaObject;
-interface IMediaObjectInPlace;
 
 typedef struct _DMOMediaType
 {
@@ -67,3 +65,178 @@
         [out] IEnumDMO **ppEnum
     );
 }
+
+/*****************************************************************************
+ * IMediaBuffer interface
+ */
+[
+    object,
+    uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837),
+    local
+]
+interface IMediaBuffer : IUnknown
+{
+    HRESULT SetLength(
+       DWORD cbLength
+    );
+
+    HRESULT GetMaxLength(
+       [out] DWORD *pcbMaxLength
+    );
+
+    HRESULT GetBufferAndLength(
+       [out] BYTE **ppBuffer,
+       [out] DWORD *pcbLength
+    );
+}
+
+typedef struct _DMO_OUTPUT_DATA_BUFFER {
+    IMediaBuffer *pBuffer;
+    DWORD dwStatus;
+    REFERENCE_TIME rtTimestamp;
+    REFERENCE_TIME rtTimelength;
+} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
+
+enum _DMO_INPLACE_PROCESS_FLAGS {
+    DMO_INPLACE_NORMAL = 0x00000000,
+    DMO_INPLACE_ZERO   = 0x00000001
+};
+
+/*****************************************************************************
+ * IMediaObject interface
+ */
+[
+    object,
+    uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4),
+    local
+]
+interface IMediaObject : IUnknown
+{
+    HRESULT GetStreamCount(
+        [out] DWORD *pcInputStreams,
+        [out] DWORD *pcOutputStreams
+    );
+
+    HRESULT GetInputStreamInfo(
+        DWORD dwInputStreamIndex,
+        [out] DWORD *pdwFlags
+    );
+
+    HRESULT GetOutputStreamInfo(
+        DWORD dwOutputStreamIndex,
+        [out] DWORD *pdwFlags
+    );
+
+    HRESULT GetInputType(
+        DWORD dwInputStreamIndex,
+        DWORD dwTypeIndex,
+        [out] DMO_MEDIA_TYPE *pmt
+    );
+
+    HRESULT GetOutputType(
+        DWORD dwOutputStreamIndex,
+        DWORD dwTypeIndex,
+        [out] DMO_MEDIA_TYPE *pmt
+    );
+
+    HRESULT SetInputType(
+        DWORD dwInputStreamIndex,
+        [in] const DMO_MEDIA_TYPE *pmt,
+        DWORD dwFlags
+    );
+
+    HRESULT SetOutputType(
+        DWORD dwOutputStreamIndex,
+        [in] const DMO_MEDIA_TYPE *pmt,
+        DWORD dwFlags
+    );
+
+    HRESULT GetInputCurrentType(
+        DWORD dwInputStreamIndex,
+        [out] DMO_MEDIA_TYPE *pmt
+    );
+
+    HRESULT GetOutputCurrentType(
+        DWORD dwOutputStreamIndex,
+        [out] DMO_MEDIA_TYPE *pmt
+    );
+
+    HRESULT GetInputSizeInfo(
+        DWORD dwInputStreamIndex,
+        [out] DWORD *pcbSize,
+        [out] DWORD *pcbMaxLookahead,
+        [out] DWORD *pcbAlignment
+    );
+
+    HRESULT GetOutputSizeInfo(
+        DWORD dwOutputStreamIndex,
+        [out] DWORD *pcbSize,
+        [out] DWORD *pcbAlignment
+    );
+
+    HRESULT GetInputMaxLatency(
+        DWORD dwInputStreamIndex,
+        [out] REFERENCE_TIME *prtMaxLatency
+    );
+
+    HRESULT SetInputMaxLatency(
+        DWORD dwInputStreamIndex,
+        REFERENCE_TIME rtMaxLatency
+    );
+
+    HRESULT Flush();
+
+    HRESULT Discontinuity(DWORD dwInputStreamIndex);
+
+    HRESULT AllocateStreamingResources();
+
+    HRESULT FreeStreamingResources();
+
+    HRESULT GetInputStatus(
+        DWORD dwInputStreamIndex,
+        [out] DWORD *dwFlags
+    );
+
+    HRESULT ProcessInput(
+        DWORD dwInputStreamIndex,
+        IMediaBuffer *pBuffer,
+        DWORD dwFlags,
+        REFERENCE_TIME rtTimestamp,
+        REFERENCE_TIME rtTimelength
+    );
+
+    HRESULT ProcessOutput(
+        DWORD dwFlags,
+        DWORD cOutputBufferCount,
+        [in,out] DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
+        [out] DWORD *pdwStatus
+    );
+
+    HRESULT Lock(LONG bLock);
+};
+
+/*****************************************************************************
+ * IMediaObjectInPlace interface
+ */
+
+[
+    object,
+    uuid(651b9ad0-0fc7-4aa9-9538-d89931010741),
+    local
+]
+interface IMediaObjectInPlace : IUnknown {
+    HRESULT Process(
+        [in] ULONG ulSize,
+        [in,out] BYTE* pData,
+        [in] REFERENCE_TIME refTimeStart,
+        [in] DWORD dwFlags
+    );
+
+    HRESULT Clone(
+        [out] IMediaObjectInPlace **ppMediaObject
+    );
+
+    HRESULT GetLatency(
+        [out] REFERENCE_TIME *pLatencyTime
+    );
+}
diff --git a/x86_64-w64-mingw32/include/memory.h b/x86_64-w64-mingw32/include/memory.h
index 2afc51f..b4937e9 100644
--- a/x86_64-w64-mingw32/include/memory.h
+++ b/x86_64-w64-mingw32/include/memory.h
@@ -7,7 +7,6 @@
 #define _INC_MEMORY
 
 #include <crtdefs.h>
-#include <sec_api/memory_s.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -27,6 +26,7 @@
   _CRTIMP int __cdecl _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale);
   int __cdecl memcmp(const void *_Buf1,const void *_Buf2,size_t _Size);
   void * __cdecl memcpy(void * __restrict__ _Dst,const void * __restrict__ _Src,size_t _Size) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
   void * __cdecl mempcpy (void *_Dst, const void *_Src, size_t _Size);
   void * __cdecl memset(void *_Dst,int _Val,size_t _Size);
 
diff --git a/x86_64-w64-mingw32/include/memoryapi.h b/x86_64-w64-mingw32/include/memoryapi.h
index 4286a0c..11f1591 100644
--- a/x86_64-w64-mingw32/include/memoryapi.h
+++ b/x86_64-w64-mingw32/include/memoryapi.h
@@ -26,6 +26,15 @@
     SIZE_T NumberOfBytes;
   } WIN32_MEMORY_RANGE_ENTRY, *PWIN32_MEMORY_RANGE_ENTRY;
 #endif
+
+#if _WIN32_WINNT >= 0x0603
+  typedef enum _OFFER_PRIORITY {
+    VmOfferPriorityVeryLow = 1,
+    VmOfferPriorityLow,
+    VmOfferPriorityBelowNormal,
+    VmOfferPriorityNormal
+  } OFFER_PRIORITY;
+#endif
 #endif
 
 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
@@ -92,6 +101,11 @@
   WINBASEAPI WINBOOL WINAPI PrefetchVirtualMemory (HANDLE hProcess, ULONG_PTR NumberOfEntries, PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses, ULONG Flags);
   WINBASEAPI WINBOOL WINAPI UnmapViewOfFileEx (PVOID BaseAddress, ULONG UnmapFlags);
 #endif
+#if _WIN32_WINNT >= 0x0603
+  WINBASEAPI DWORD WINAPI DiscardVirtualMemory (PVOID VirtualAddress, SIZE_T Size);
+  WINBASEAPI DWORD WINAPI OfferVirtualMemory (PVOID VirtualAddress, SIZE_T Size, OFFER_PRIORITY Priority);
+  WINBASEAPI DWORD WINAPI ReclaimVirtualMemory (PVOID VirtualAddress, SIZE_T Size);
+#endif
 #endif
 
 #ifdef __cplusplus
diff --git a/x86_64-w64-mingw32/include/mfapi.h b/x86_64-w64-mingw32/include/mfapi.h
index 0ae2f90..41f7ffc 100644
--- a/x86_64-w64-mingw32/include/mfapi.h
+++ b/x86_64-w64-mingw32/include/mfapi.h
@@ -373,8 +373,13 @@
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_DVH1, FCC ('dvh1'));
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_DVC, FCC ('dvc '));
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_H264, FCC ('H264'));
+  DEFINE_MEDIATYPE_GUID (MFVideoFormat_H265, FCC ('H265'));
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_MJPG, FCC ('MJPG'));
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_420O, FCC ('420O'));
+  DEFINE_MEDIATYPE_GUID (MFVideoFormat_HEVC, FCC ('HEVC'));
+  DEFINE_MEDIATYPE_GUID (MFVideoFormat_HEVC_ES, FCC('HEVS'));
+  DEFINE_MEDIATYPE_GUID (MFVideoFormat_VP80, FCC ('VP80'));
+  DEFINE_MEDIATYPE_GUID (MFVideoFormat_VP90, FCC ('VP90'));
 #if WINVER >= 0x0602
   DEFINE_MEDIATYPE_GUID (MFVideoFormat_H263, FCC ('H263'));
 #endif
diff --git a/x86_64-w64-mingw32/include/msctf.h b/x86_64-w64-mingw32/include/msctf.h
index f30fe17..d9bd147 100644
--- a/x86_64-w64-mingw32/include/msctf.h
+++ b/x86_64-w64-mingw32/include/msctf.h
@@ -17,11 +17,26 @@
 
 /* Forward declarations */
 
+#ifndef __ITfFunctionProvider_FWD_DEFINED__
+#define __ITfFunctionProvider_FWD_DEFINED__
+typedef interface ITfFunctionProvider ITfFunctionProvider;
+#endif
+
+#ifndef __IEnumTfFunctionProviders_FWD_DEFINED__
+#define __IEnumTfFunctionProviders_FWD_DEFINED__
+typedef interface IEnumTfFunctionProviders IEnumTfFunctionProviders;
+#endif
+
 #ifndef __ITfThreadMgr_FWD_DEFINED__
 #define __ITfThreadMgr_FWD_DEFINED__
 typedef interface ITfThreadMgr ITfThreadMgr;
 #endif
 
+#ifndef __ITfThreadMgrEx_FWD_DEFINED__
+#define __ITfThreadMgrEx_FWD_DEFINED__
+typedef interface ITfThreadMgrEx ITfThreadMgrEx;
+#endif
+
 #ifndef __ITfCompositionView_FWD_DEFINED__
 #define __ITfCompositionView_FWD_DEFINED__
 typedef interface ITfCompositionView ITfCompositionView;
@@ -32,6 +47,26 @@
 typedef interface ITfDocumentMgr ITfDocumentMgr;
 #endif
 
+#ifndef __ITfContextView_FWD_DEFINED__
+#define __ITfContextView_FWD_DEFINED__
+typedef interface ITfContextView ITfContextView;
+#endif
+
+#ifndef __IEnumTfContextViews_FWD_DEFINED__
+#define __IEnumTfContextViews_FWD_DEFINED__
+typedef interface IEnumTfContextViews IEnumTfContextViews;
+#endif
+
+#ifndef __IEnumTfProperties_FWD_DEFINED__
+#define __IEnumTfProperties_FWD_DEFINED__
+typedef interface IEnumTfProperties IEnumTfProperties;
+#endif
+
+#ifndef __ITfRangeBackup_FWD_DEFINED__
+#define __ITfRangeBackup_FWD_DEFINED__
+typedef interface ITfRangeBackup ITfRangeBackup;
+#endif
+
 #ifndef __ITfContext_FWD_DEFINED__
 #define __ITfContext_FWD_DEFINED__
 typedef interface ITfContext ITfContext;
@@ -77,6 +112,16 @@
 typedef interface ITfCategoryMgr ITfCategoryMgr;
 #endif
 
+#ifndef __IEnumTfRanges_FWD_DEFINED__
+#define __IEnumTfRanges_FWD_DEFINED__
+typedef interface IEnumTfRanges IEnumTfRanges;
+#endif
+
+#ifndef __ITfEditRecord_FWD_DEFINED__
+#define __ITfEditRecord_FWD_DEFINED__
+typedef interface ITfEditRecord ITfEditRecord;
+#endif
+
 #ifndef __ITfTextEditSink_FWD_DEFINED__
 #define __ITfTextEditSink_FWD_DEFINED__
 typedef interface ITfTextEditSink ITfTextEditSink;
@@ -157,11 +202,6 @@
 typedef interface ITfPropertyStore ITfPropertyStore;
 #endif
 
-#ifndef __IEnumTfRanges_FWD_DEFINED__
-#define __IEnumTfRanges_FWD_DEFINED__
-typedef interface IEnumTfRanges IEnumTfRanges;
-#endif
-
 #ifndef __IEnumITfCompositionView_FWD_DEFINED__
 #define __IEnumITfCompositionView_FWD_DEFINED__
 typedef interface IEnumITfCompositionView IEnumITfCompositionView;
@@ -232,6 +272,21 @@
 typedef interface IEnumTfDocumentMgrs IEnumTfDocumentMgrs;
 #endif
 
+#ifndef __ITfUIElement_FWD_DEFINED__
+#define __ITfUIElement_FWD_DEFINED__
+typedef interface ITfUIElement ITfUIElement;
+#endif
+
+#ifndef __IEnumTfUIElements_FWD_DEFINED__
+#define __IEnumTfUIElements_FWD_DEFINED__
+typedef interface IEnumTfUIElements IEnumTfUIElements;
+#endif
+
+#ifndef __ITfUIElementMgr_FWD_DEFINED__
+#define __ITfUIElementMgr_FWD_DEFINED__
+typedef interface ITfUIElementMgr ITfUIElementMgr;
+#endif
+
 #ifndef __ITfSourceSingle_FWD_DEFINED__
 #define __ITfSourceSingle_FWD_DEFINED__
 typedef interface ITfSourceSingle ITfSourceSingle;
@@ -273,7 +328,6 @@
 extern "C" {
 #endif
 
-#include <winuser.h>
 #define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)
 #define TF_E_DISCONNECTED    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)
 #define TF_E_ALREADY_EXISTS  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)
@@ -344,16 +398,6 @@
 typedef interface IEnumTfContexts IEnumTfContexts;
 #endif
 
-#ifndef __ITfFunctionProvider_FWD_DEFINED__
-#define __ITfFunctionProvider_FWD_DEFINED__
-typedef interface ITfFunctionProvider ITfFunctionProvider;
-#endif
-
-#ifndef __IEnumTfFunctionProviders_FWD_DEFINED__
-#define __IEnumTfFunctionProviders_FWD_DEFINED__
-typedef interface IEnumTfFunctionProviders IEnumTfFunctionProviders;
-#endif
-
 #ifndef __ITfCompartmentMgr_FWD_DEFINED__
 #define __ITfCompartmentMgr_FWD_DEFINED__
 typedef interface ITfCompartmentMgr ITfCompartmentMgr;
@@ -369,16 +413,6 @@
 typedef interface ITfRange ITfRange;
 #endif
 
-#ifndef __ITfContextView_FWD_DEFINED__
-#define __ITfContextView_FWD_DEFINED__
-typedef interface ITfContextView ITfContextView;
-#endif
-
-#ifndef __IEnumTfContextViews_FWD_DEFINED__
-#define __IEnumTfContextViews_FWD_DEFINED__
-typedef interface IEnumTfContextViews IEnumTfContextViews;
-#endif
-
 #ifndef __ITfProperty_FWD_DEFINED__
 #define __ITfProperty_FWD_DEFINED__
 typedef interface ITfProperty ITfProperty;
@@ -389,26 +423,11 @@
 typedef interface ITfReadOnlyProperty ITfReadOnlyProperty;
 #endif
 
-#ifndef __IEnumTfProperties_FWD_DEFINED__
-#define __IEnumTfProperties_FWD_DEFINED__
-typedef interface IEnumTfProperties IEnumTfProperties;
-#endif
-
-#ifndef __ITfRangeBackup_FWD_DEFINED__
-#define __ITfRangeBackup_FWD_DEFINED__
-typedef interface ITfRangeBackup ITfRangeBackup;
-#endif
-
 #ifndef __IEnumTfLanguageProfiles_FWD_DEFINED__
 #define __IEnumTfLanguageProfiles_FWD_DEFINED__
 typedef interface IEnumTfLanguageProfiles IEnumTfLanguageProfiles;
 #endif
 
-#ifndef __ITfEditRecord_FWD_DEFINED__
-#define __ITfEditRecord_FWD_DEFINED__
-typedef interface ITfEditRecord ITfEditRecord;
-#endif
-
 #ifndef __ITfCompositionView_FWD_DEFINED__
 #define __ITfCompositionView_FWD_DEFINED__
 typedef interface ITfCompositionView ITfCompositionView;
@@ -446,6 +465,279 @@
     TF_ANCHOR_END = 1
 } TfAnchor;
 /*****************************************************************************
+ * ITfFunctionProvider interface
+ */
+#ifndef __ITfFunctionProvider_INTERFACE_DEFINED__
+#define __ITfFunctionProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfFunctionProvider, 0x101d6610, 0x0990, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("101d6610-0990-11d3-8df0-00105a2799b5")
+ITfFunctionProvider : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetType(
+        GUID *guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDescription(
+        BSTR *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFunction(
+        REFGUID guid,
+        REFIID riid,
+        IUnknown **func) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfFunctionProvider, 0x101d6610, 0x0990, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct ITfFunctionProviderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfFunctionProvider* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfFunctionProvider* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfFunctionProvider* This);
+
+    /*** ITfFunctionProvider methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetType)(
+        ITfFunctionProvider* This,
+        GUID *guid);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        ITfFunctionProvider* This,
+        BSTR *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        ITfFunctionProvider* This,
+        REFGUID guid,
+        REFIID riid,
+        IUnknown **func);
+
+    END_INTERFACE
+} ITfFunctionProviderVtbl;
+interface ITfFunctionProvider {
+    CONST_VTBL ITfFunctionProviderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfFunctionProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfFunctionProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfFunctionProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfFunctionProvider methods ***/
+#define ITfFunctionProvider_GetType(This,guid) (This)->lpVtbl->GetType(This,guid)
+#define ITfFunctionProvider_GetDescription(This,desc) (This)->lpVtbl->GetDescription(This,desc)
+#define ITfFunctionProvider_GetFunction(This,guid,riid,func) (This)->lpVtbl->GetFunction(This,guid,riid,func)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfFunctionProvider_QueryInterface(ITfFunctionProvider* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfFunctionProvider_AddRef(ITfFunctionProvider* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfFunctionProvider_Release(ITfFunctionProvider* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfFunctionProvider methods ***/
+static FORCEINLINE HRESULT ITfFunctionProvider_GetType(ITfFunctionProvider* This,GUID *guid) {
+    return This->lpVtbl->GetType(This,guid);
+}
+static FORCEINLINE HRESULT ITfFunctionProvider_GetDescription(ITfFunctionProvider* This,BSTR *desc) {
+    return This->lpVtbl->GetDescription(This,desc);
+}
+static FORCEINLINE HRESULT ITfFunctionProvider_GetFunction(ITfFunctionProvider* This,REFGUID guid,REFIID riid,IUnknown **func) {
+    return This->lpVtbl->GetFunction(This,guid,riid,func);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfFunctionProvider_GetType_Proxy(
+    ITfFunctionProvider* This,
+    GUID *guid);
+void __RPC_STUB ITfFunctionProvider_GetType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfFunctionProvider_GetDescription_Proxy(
+    ITfFunctionProvider* This,
+    BSTR *desc);
+void __RPC_STUB ITfFunctionProvider_GetDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfFunctionProvider_GetFunction_Proxy(
+    ITfFunctionProvider* This,
+    REFGUID guid,
+    REFIID riid,
+    IUnknown **func);
+void __RPC_STUB ITfFunctionProvider_GetFunction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfFunctionProvider_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTfFunctionProviders interface
+ */
+#ifndef __IEnumTfFunctionProviders_INTERFACE_DEFINED__
+#define __IEnumTfFunctionProviders_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfFunctionProviders, 0xe4b24db0, 0x0990, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e4b24db0-0990-11d3-8df0-00105a2799b5")
+IEnumTfFunctionProviders : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfFunctionProviders **ret) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG count,
+        ITfFunctionProvider **prov,
+        ULONG *fetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG count) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfFunctionProviders, 0xe4b24db0, 0x0990, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct IEnumTfFunctionProvidersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfFunctionProviders* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfFunctionProviders* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfFunctionProviders* This);
+
+    /*** IEnumTfFunctionProviders methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfFunctionProviders* This,
+        IEnumTfFunctionProviders **ret);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfFunctionProviders* This,
+        ULONG count,
+        ITfFunctionProvider **prov,
+        ULONG *fetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfFunctionProviders* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfFunctionProviders* This,
+        ULONG count);
+
+    END_INTERFACE
+} IEnumTfFunctionProvidersVtbl;
+interface IEnumTfFunctionProviders {
+    CONST_VTBL IEnumTfFunctionProvidersVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfFunctionProviders_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfFunctionProviders_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfFunctionProviders_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfFunctionProviders methods ***/
+#define IEnumTfFunctionProviders_Clone(This,ret) (This)->lpVtbl->Clone(This,ret)
+#define IEnumTfFunctionProviders_Next(This,count,prov,fetched) (This)->lpVtbl->Next(This,count,prov,fetched)
+#define IEnumTfFunctionProviders_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfFunctionProviders_Skip(This,count) (This)->lpVtbl->Skip(This,count)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfFunctionProviders_QueryInterface(IEnumTfFunctionProviders* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfFunctionProviders_AddRef(IEnumTfFunctionProviders* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfFunctionProviders_Release(IEnumTfFunctionProviders* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfFunctionProviders methods ***/
+static FORCEINLINE HRESULT IEnumTfFunctionProviders_Clone(IEnumTfFunctionProviders* This,IEnumTfFunctionProviders **ret) {
+    return This->lpVtbl->Clone(This,ret);
+}
+static FORCEINLINE HRESULT IEnumTfFunctionProviders_Next(IEnumTfFunctionProviders* This,ULONG count,ITfFunctionProvider **prov,ULONG *fetched) {
+    return This->lpVtbl->Next(This,count,prov,fetched);
+}
+static FORCEINLINE HRESULT IEnumTfFunctionProviders_Reset(IEnumTfFunctionProviders* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfFunctionProviders_Skip(IEnumTfFunctionProviders* This,ULONG count) {
+    return This->lpVtbl->Skip(This,count);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfFunctionProviders_Clone_Proxy(
+    IEnumTfFunctionProviders* This,
+    IEnumTfFunctionProviders **ret);
+void __RPC_STUB IEnumTfFunctionProviders_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfFunctionProviders_Next_Proxy(
+    IEnumTfFunctionProviders* This,
+    ULONG count,
+    ITfFunctionProvider **prov,
+    ULONG *fetched);
+void __RPC_STUB IEnumTfFunctionProviders_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfFunctionProviders_Reset_Proxy(
+    IEnumTfFunctionProviders* This);
+void __RPC_STUB IEnumTfFunctionProviders_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfFunctionProviders_Skip_Proxy(
+    IEnumTfFunctionProviders* This,
+    ULONG count);
+void __RPC_STUB IEnumTfFunctionProviders_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfFunctionProviders_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ITfThreadMgr interface
  */
 #ifndef __ITfThreadMgr_INTERFACE_DEFINED__
@@ -727,6 +1019,205 @@
 #endif  /* __ITfThreadMgr_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * ITfThreadMgrEx interface
+ */
+#ifndef __ITfThreadMgrEx_INTERFACE_DEFINED__
+#define __ITfThreadMgrEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfThreadMgrEx, 0x3e90ade3, 0x7594, 0x4cb0, 0xbb,0x58, 0x69,0x62,0x8f,0x5f,0x45,0x8c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3e90ade3-7594-4cb0-bb58-69628f5f458c")
+ITfThreadMgrEx : public ITfThreadMgr
+{
+    virtual HRESULT STDMETHODCALLTYPE ActivateEx(
+        TfClientId *id,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetActiveFlags(
+        DWORD *flags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfThreadMgrEx, 0x3e90ade3, 0x7594, 0x4cb0, 0xbb,0x58, 0x69,0x62,0x8f,0x5f,0x45,0x8c)
+#endif
+#else
+typedef struct ITfThreadMgrExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfThreadMgrEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfThreadMgrEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfThreadMgrEx* This);
+
+    /*** ITfThreadMgr methods ***/
+    HRESULT (STDMETHODCALLTYPE *Activate)(
+        ITfThreadMgrEx* This,
+        TfClientId *ptid);
+
+    HRESULT (STDMETHODCALLTYPE *Deactivate)(
+        ITfThreadMgrEx* This);
+
+    HRESULT (STDMETHODCALLTYPE *CreateDocumentMgr)(
+        ITfThreadMgrEx* This,
+        ITfDocumentMgr **ppdim);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDocumentMgrs)(
+        ITfThreadMgrEx* This,
+        IEnumTfDocumentMgrs **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *GetFocus)(
+        ITfThreadMgrEx* This,
+        ITfDocumentMgr **ppdimFocus);
+
+    HRESULT (STDMETHODCALLTYPE *SetFocus)(
+        ITfThreadMgrEx* This,
+        ITfDocumentMgr *pdimFocus);
+
+    HRESULT (STDMETHODCALLTYPE *AssociateFocus)(
+        ITfThreadMgrEx* This,
+        HWND hwnd,
+        ITfDocumentMgr *pdimNew,
+        ITfDocumentMgr **ppdimPrev);
+
+    HRESULT (STDMETHODCALLTYPE *IsThreadFocus)(
+        ITfThreadMgrEx* This,
+        WINBOOL *pfThreadFocus);
+
+    HRESULT (STDMETHODCALLTYPE *GetFunctionProvider)(
+        ITfThreadMgrEx* This,
+        REFCLSID clsid,
+        ITfFunctionProvider **ppFuncProv);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFunctionProviders)(
+        ITfThreadMgrEx* This,
+        IEnumTfFunctionProviders **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *GetGlobalCompartment)(
+        ITfThreadMgrEx* This,
+        ITfCompartmentMgr **ppCompMgr);
+
+    /*** ITfThreadMgrEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *ActivateEx)(
+        ITfThreadMgrEx* This,
+        TfClientId *id,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetActiveFlags)(
+        ITfThreadMgrEx* This,
+        DWORD *flags);
+
+    END_INTERFACE
+} ITfThreadMgrExVtbl;
+interface ITfThreadMgrEx {
+    CONST_VTBL ITfThreadMgrExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfThreadMgrEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfThreadMgrEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfThreadMgrEx_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfThreadMgr methods ***/
+#define ITfThreadMgrEx_Activate(This,ptid) (This)->lpVtbl->Activate(This,ptid)
+#define ITfThreadMgrEx_Deactivate(This) (This)->lpVtbl->Deactivate(This)
+#define ITfThreadMgrEx_CreateDocumentMgr(This,ppdim) (This)->lpVtbl->CreateDocumentMgr(This,ppdim)
+#define ITfThreadMgrEx_EnumDocumentMgrs(This,ppEnum) (This)->lpVtbl->EnumDocumentMgrs(This,ppEnum)
+#define ITfThreadMgrEx_GetFocus(This,ppdimFocus) (This)->lpVtbl->GetFocus(This,ppdimFocus)
+#define ITfThreadMgrEx_SetFocus(This,pdimFocus) (This)->lpVtbl->SetFocus(This,pdimFocus)
+#define ITfThreadMgrEx_AssociateFocus(This,hwnd,pdimNew,ppdimPrev) (This)->lpVtbl->AssociateFocus(This,hwnd,pdimNew,ppdimPrev)
+#define ITfThreadMgrEx_IsThreadFocus(This,pfThreadFocus) (This)->lpVtbl->IsThreadFocus(This,pfThreadFocus)
+#define ITfThreadMgrEx_GetFunctionProvider(This,clsid,ppFuncProv) (This)->lpVtbl->GetFunctionProvider(This,clsid,ppFuncProv)
+#define ITfThreadMgrEx_EnumFunctionProviders(This,ppEnum) (This)->lpVtbl->EnumFunctionProviders(This,ppEnum)
+#define ITfThreadMgrEx_GetGlobalCompartment(This,ppCompMgr) (This)->lpVtbl->GetGlobalCompartment(This,ppCompMgr)
+/*** ITfThreadMgrEx methods ***/
+#define ITfThreadMgrEx_ActivateEx(This,id,flags) (This)->lpVtbl->ActivateEx(This,id,flags)
+#define ITfThreadMgrEx_GetActiveFlags(This,flags) (This)->lpVtbl->GetActiveFlags(This,flags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfThreadMgrEx_QueryInterface(ITfThreadMgrEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfThreadMgrEx_AddRef(ITfThreadMgrEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfThreadMgrEx_Release(ITfThreadMgrEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfThreadMgr methods ***/
+static FORCEINLINE HRESULT ITfThreadMgrEx_Activate(ITfThreadMgrEx* This,TfClientId *ptid) {
+    return This->lpVtbl->Activate(This,ptid);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_Deactivate(ITfThreadMgrEx* This) {
+    return This->lpVtbl->Deactivate(This);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_CreateDocumentMgr(ITfThreadMgrEx* This,ITfDocumentMgr **ppdim) {
+    return This->lpVtbl->CreateDocumentMgr(This,ppdim);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_EnumDocumentMgrs(ITfThreadMgrEx* This,IEnumTfDocumentMgrs **ppEnum) {
+    return This->lpVtbl->EnumDocumentMgrs(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_GetFocus(ITfThreadMgrEx* This,ITfDocumentMgr **ppdimFocus) {
+    return This->lpVtbl->GetFocus(This,ppdimFocus);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_SetFocus(ITfThreadMgrEx* This,ITfDocumentMgr *pdimFocus) {
+    return This->lpVtbl->SetFocus(This,pdimFocus);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_AssociateFocus(ITfThreadMgrEx* This,HWND hwnd,ITfDocumentMgr *pdimNew,ITfDocumentMgr **ppdimPrev) {
+    return This->lpVtbl->AssociateFocus(This,hwnd,pdimNew,ppdimPrev);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_IsThreadFocus(ITfThreadMgrEx* This,WINBOOL *pfThreadFocus) {
+    return This->lpVtbl->IsThreadFocus(This,pfThreadFocus);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_GetFunctionProvider(ITfThreadMgrEx* This,REFCLSID clsid,ITfFunctionProvider **ppFuncProv) {
+    return This->lpVtbl->GetFunctionProvider(This,clsid,ppFuncProv);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_EnumFunctionProviders(ITfThreadMgrEx* This,IEnumTfFunctionProviders **ppEnum) {
+    return This->lpVtbl->EnumFunctionProviders(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_GetGlobalCompartment(ITfThreadMgrEx* This,ITfCompartmentMgr **ppCompMgr) {
+    return This->lpVtbl->GetGlobalCompartment(This,ppCompMgr);
+}
+/*** ITfThreadMgrEx methods ***/
+static FORCEINLINE HRESULT ITfThreadMgrEx_ActivateEx(ITfThreadMgrEx* This,TfClientId *id,DWORD flags) {
+    return This->lpVtbl->ActivateEx(This,id,flags);
+}
+static FORCEINLINE HRESULT ITfThreadMgrEx_GetActiveFlags(ITfThreadMgrEx* This,DWORD *flags) {
+    return This->lpVtbl->GetActiveFlags(This,flags);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfThreadMgrEx_ActivateEx_Proxy(
+    ITfThreadMgrEx* This,
+    TfClientId *id,
+    DWORD flags);
+void __RPC_STUB ITfThreadMgrEx_ActivateEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfThreadMgrEx_GetActiveFlags_Proxy(
+    ITfThreadMgrEx* This,
+    DWORD *flags);
+void __RPC_STUB ITfThreadMgrEx_GetActiveFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfThreadMgrEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ITfCompositionView interface
  */
 #ifndef __ITfCompositionView_INTERFACE_DEFINED__
@@ -1023,6 +1514,542 @@
 #endif  /* __ITfDocumentMgr_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * ITfContextView interface
+ */
+#ifndef __ITfContextView_INTERFACE_DEFINED__
+#define __ITfContextView_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfContextView, 0x2433bf8e, 0x0f9b, 0x435c, 0xba,0x2c, 0x18,0x06,0x11,0x97,0x8c,0x30);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2433bf8e-0f9b-435c-ba2c-180611978c30")
+ITfContextView : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetRangeFromPoint(
+        TfEditCookie cookie,
+        const POINT *pt,
+        DWORD flags,
+        ITfRange **range) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextExt(
+        TfEditCookie cookie,
+        ITfRange *range,
+        RECT *rect,
+        WINBOOL *clipped) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScreenExt(
+        RECT *rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWnd(
+        HWND *hwnd) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfContextView, 0x2433bf8e, 0x0f9b, 0x435c, 0xba,0x2c, 0x18,0x06,0x11,0x97,0x8c,0x30)
+#endif
+#else
+typedef struct ITfContextViewVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfContextView* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfContextView* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfContextView* This);
+
+    /*** ITfContextView methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetRangeFromPoint)(
+        ITfContextView* This,
+        TfEditCookie cookie,
+        const POINT *pt,
+        DWORD flags,
+        ITfRange **range);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextExt)(
+        ITfContextView* This,
+        TfEditCookie cookie,
+        ITfRange *range,
+        RECT *rect,
+        WINBOOL *clipped);
+
+    HRESULT (STDMETHODCALLTYPE *GetScreenExt)(
+        ITfContextView* This,
+        RECT *rect);
+
+    HRESULT (STDMETHODCALLTYPE *GetWnd)(
+        ITfContextView* This,
+        HWND *hwnd);
+
+    END_INTERFACE
+} ITfContextViewVtbl;
+interface ITfContextView {
+    CONST_VTBL ITfContextViewVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfContextView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfContextView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfContextView_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfContextView methods ***/
+#define ITfContextView_GetRangeFromPoint(This,cookie,pt,flags,range) (This)->lpVtbl->GetRangeFromPoint(This,cookie,pt,flags,range)
+#define ITfContextView_GetTextExt(This,cookie,range,rect,clipped) (This)->lpVtbl->GetTextExt(This,cookie,range,rect,clipped)
+#define ITfContextView_GetScreenExt(This,rect) (This)->lpVtbl->GetScreenExt(This,rect)
+#define ITfContextView_GetWnd(This,hwnd) (This)->lpVtbl->GetWnd(This,hwnd)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfContextView_QueryInterface(ITfContextView* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfContextView_AddRef(ITfContextView* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfContextView_Release(ITfContextView* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfContextView methods ***/
+static FORCEINLINE HRESULT ITfContextView_GetRangeFromPoint(ITfContextView* This,TfEditCookie cookie,const POINT *pt,DWORD flags,ITfRange **range) {
+    return This->lpVtbl->GetRangeFromPoint(This,cookie,pt,flags,range);
+}
+static FORCEINLINE HRESULT ITfContextView_GetTextExt(ITfContextView* This,TfEditCookie cookie,ITfRange *range,RECT *rect,WINBOOL *clipped) {
+    return This->lpVtbl->GetTextExt(This,cookie,range,rect,clipped);
+}
+static FORCEINLINE HRESULT ITfContextView_GetScreenExt(ITfContextView* This,RECT *rect) {
+    return This->lpVtbl->GetScreenExt(This,rect);
+}
+static FORCEINLINE HRESULT ITfContextView_GetWnd(ITfContextView* This,HWND *hwnd) {
+    return This->lpVtbl->GetWnd(This,hwnd);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfContextView_GetRangeFromPoint_Proxy(
+    ITfContextView* This,
+    TfEditCookie cookie,
+    const POINT *pt,
+    DWORD flags,
+    ITfRange **range);
+void __RPC_STUB ITfContextView_GetRangeFromPoint_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfContextView_GetTextExt_Proxy(
+    ITfContextView* This,
+    TfEditCookie cookie,
+    ITfRange *range,
+    RECT *rect,
+    WINBOOL *clipped);
+void __RPC_STUB ITfContextView_GetTextExt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfContextView_GetScreenExt_Proxy(
+    ITfContextView* This,
+    RECT *rect);
+void __RPC_STUB ITfContextView_GetScreenExt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfContextView_GetWnd_Proxy(
+    ITfContextView* This,
+    HWND *hwnd);
+void __RPC_STUB ITfContextView_GetWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfContextView_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTfContextViews interface
+ */
+#ifndef __IEnumTfContextViews_INTERFACE_DEFINED__
+#define __IEnumTfContextViews_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfContextViews, 0xf0c0f8dd, 0xcf38, 0x44e1, 0xbb,0x0f, 0x68,0xcf,0x0d,0x55,0x1c,0x78);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f0c0f8dd-cf38-44e1-bb0f-68cf0d551c78")
+IEnumTfContextViews : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfContextViews **ret) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG count,
+        ITfContextView **views,
+        ULONG *fetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG count) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfContextViews, 0xf0c0f8dd, 0xcf38, 0x44e1, 0xbb,0x0f, 0x68,0xcf,0x0d,0x55,0x1c,0x78)
+#endif
+#else
+typedef struct IEnumTfContextViewsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfContextViews* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfContextViews* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfContextViews* This);
+
+    /*** IEnumTfContextViews methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfContextViews* This,
+        IEnumTfContextViews **ret);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfContextViews* This,
+        ULONG count,
+        ITfContextView **views,
+        ULONG *fetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfContextViews* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfContextViews* This,
+        ULONG count);
+
+    END_INTERFACE
+} IEnumTfContextViewsVtbl;
+interface IEnumTfContextViews {
+    CONST_VTBL IEnumTfContextViewsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfContextViews_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfContextViews_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfContextViews_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfContextViews methods ***/
+#define IEnumTfContextViews_Clone(This,ret) (This)->lpVtbl->Clone(This,ret)
+#define IEnumTfContextViews_Next(This,count,views,fetched) (This)->lpVtbl->Next(This,count,views,fetched)
+#define IEnumTfContextViews_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfContextViews_Skip(This,count) (This)->lpVtbl->Skip(This,count)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfContextViews_QueryInterface(IEnumTfContextViews* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfContextViews_AddRef(IEnumTfContextViews* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfContextViews_Release(IEnumTfContextViews* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfContextViews methods ***/
+static FORCEINLINE HRESULT IEnumTfContextViews_Clone(IEnumTfContextViews* This,IEnumTfContextViews **ret) {
+    return This->lpVtbl->Clone(This,ret);
+}
+static FORCEINLINE HRESULT IEnumTfContextViews_Next(IEnumTfContextViews* This,ULONG count,ITfContextView **views,ULONG *fetched) {
+    return This->lpVtbl->Next(This,count,views,fetched);
+}
+static FORCEINLINE HRESULT IEnumTfContextViews_Reset(IEnumTfContextViews* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfContextViews_Skip(IEnumTfContextViews* This,ULONG count) {
+    return This->lpVtbl->Skip(This,count);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfContextViews_Clone_Proxy(
+    IEnumTfContextViews* This,
+    IEnumTfContextViews **ret);
+void __RPC_STUB IEnumTfContextViews_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfContextViews_Next_Proxy(
+    IEnumTfContextViews* This,
+    ULONG count,
+    ITfContextView **views,
+    ULONG *fetched);
+void __RPC_STUB IEnumTfContextViews_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfContextViews_Reset_Proxy(
+    IEnumTfContextViews* This);
+void __RPC_STUB IEnumTfContextViews_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfContextViews_Skip_Proxy(
+    IEnumTfContextViews* This,
+    ULONG count);
+void __RPC_STUB IEnumTfContextViews_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfContextViews_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTfProperties interface
+ */
+#ifndef __IEnumTfProperties_INTERFACE_DEFINED__
+#define __IEnumTfProperties_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfProperties, 0x19188cb0, 0xaca9, 0x11d2, 0xaf,0xc5, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("19188cb0-aca9-11d2-afc5-00105a2799b5")
+IEnumTfProperties : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfProperties **ret) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG count,
+        ITfProperty **props,
+        ULONG *fetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG count) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfProperties, 0x19188cb0, 0xaca9, 0x11d2, 0xaf,0xc5, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct IEnumTfPropertiesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfProperties* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfProperties* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfProperties* This);
+
+    /*** IEnumTfProperties methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfProperties* This,
+        IEnumTfProperties **ret);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfProperties* This,
+        ULONG count,
+        ITfProperty **props,
+        ULONG *fetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfProperties* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfProperties* This,
+        ULONG count);
+
+    END_INTERFACE
+} IEnumTfPropertiesVtbl;
+interface IEnumTfProperties {
+    CONST_VTBL IEnumTfPropertiesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfProperties_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfProperties methods ***/
+#define IEnumTfProperties_Clone(This,ret) (This)->lpVtbl->Clone(This,ret)
+#define IEnumTfProperties_Next(This,count,props,fetched) (This)->lpVtbl->Next(This,count,props,fetched)
+#define IEnumTfProperties_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfProperties_Skip(This,count) (This)->lpVtbl->Skip(This,count)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfProperties_QueryInterface(IEnumTfProperties* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfProperties_AddRef(IEnumTfProperties* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfProperties_Release(IEnumTfProperties* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfProperties methods ***/
+static FORCEINLINE HRESULT IEnumTfProperties_Clone(IEnumTfProperties* This,IEnumTfProperties **ret) {
+    return This->lpVtbl->Clone(This,ret);
+}
+static FORCEINLINE HRESULT IEnumTfProperties_Next(IEnumTfProperties* This,ULONG count,ITfProperty **props,ULONG *fetched) {
+    return This->lpVtbl->Next(This,count,props,fetched);
+}
+static FORCEINLINE HRESULT IEnumTfProperties_Reset(IEnumTfProperties* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfProperties_Skip(IEnumTfProperties* This,ULONG count) {
+    return This->lpVtbl->Skip(This,count);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfProperties_Clone_Proxy(
+    IEnumTfProperties* This,
+    IEnumTfProperties **ret);
+void __RPC_STUB IEnumTfProperties_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfProperties_Next_Proxy(
+    IEnumTfProperties* This,
+    ULONG count,
+    ITfProperty **props,
+    ULONG *fetched);
+void __RPC_STUB IEnumTfProperties_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfProperties_Reset_Proxy(
+    IEnumTfProperties* This);
+void __RPC_STUB IEnumTfProperties_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfProperties_Skip_Proxy(
+    IEnumTfProperties* This,
+    ULONG count);
+void __RPC_STUB IEnumTfProperties_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfProperties_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITfRangeBackup interface
+ */
+#ifndef __ITfRangeBackup_INTERFACE_DEFINED__
+#define __ITfRangeBackup_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfRangeBackup, 0x463a506d, 0x6992, 0x49d2, 0x9b,0x88, 0x93,0xd5,0x5e,0x70,0xbb,0x16);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("463a506d-6992-49d2-9b88-93d55e70bb16")
+ITfRangeBackup : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Restore(
+        TfEditCookie cookie,
+        ITfRange *range) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfRangeBackup, 0x463a506d, 0x6992, 0x49d2, 0x9b,0x88, 0x93,0xd5,0x5e,0x70,0xbb,0x16)
+#endif
+#else
+typedef struct ITfRangeBackupVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfRangeBackup* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfRangeBackup* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfRangeBackup* This);
+
+    /*** ITfRangeBackup methods ***/
+    HRESULT (STDMETHODCALLTYPE *Restore)(
+        ITfRangeBackup* This,
+        TfEditCookie cookie,
+        ITfRange *range);
+
+    END_INTERFACE
+} ITfRangeBackupVtbl;
+interface ITfRangeBackup {
+    CONST_VTBL ITfRangeBackupVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfRangeBackup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfRangeBackup_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfRangeBackup_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfRangeBackup methods ***/
+#define ITfRangeBackup_Restore(This,cookie,range) (This)->lpVtbl->Restore(This,cookie,range)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfRangeBackup_QueryInterface(ITfRangeBackup* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfRangeBackup_AddRef(ITfRangeBackup* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfRangeBackup_Release(ITfRangeBackup* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfRangeBackup methods ***/
+static FORCEINLINE HRESULT ITfRangeBackup_Restore(ITfRangeBackup* This,TfEditCookie cookie,ITfRange *range) {
+    return This->lpVtbl->Restore(This,cookie,range);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfRangeBackup_Restore_Proxy(
+    ITfRangeBackup* This,
+    TfEditCookie cookie,
+    ITfRange *range);
+void __RPC_STUB ITfRangeBackup_Restore_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfRangeBackup_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ITfContext interface
  */
 #ifndef __ITfContext_INTERFACE_DEFINED__
@@ -3423,6 +4450,265 @@
 #endif  /* __ITfCategoryMgr_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * IEnumTfRanges interface
+ */
+#ifndef __IEnumTfRanges_INTERFACE_DEFINED__
+#define __IEnumTfRanges_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfRanges, 0xf99d3f40, 0x8e32, 0x11d2, 0xbf,0x46, 0x00,0x10,0x5a,0x27,0x99,0xb5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f99d3f40-8e32-11d2-bf46-00105a2799b5")
+IEnumTfRanges : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfRanges **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG ulCount,
+        ITfRange **ppRange,
+        ULONG *pcFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG ulCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfRanges, 0xf99d3f40, 0x8e32, 0x11d2, 0xbf,0x46, 0x00,0x10,0x5a,0x27,0x99,0xb5)
+#endif
+#else
+typedef struct IEnumTfRangesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfRanges* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfRanges* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfRanges* This);
+
+    /*** IEnumTfRanges methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfRanges* This,
+        IEnumTfRanges **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfRanges* This,
+        ULONG ulCount,
+        ITfRange **ppRange,
+        ULONG *pcFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfRanges* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfRanges* This,
+        ULONG ulCount);
+
+    END_INTERFACE
+} IEnumTfRangesVtbl;
+interface IEnumTfRanges {
+    CONST_VTBL IEnumTfRangesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfRanges_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfRanges_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfRanges_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfRanges methods ***/
+#define IEnumTfRanges_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#define IEnumTfRanges_Next(This,ulCount,ppRange,pcFetched) (This)->lpVtbl->Next(This,ulCount,ppRange,pcFetched)
+#define IEnumTfRanges_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfRanges_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfRanges_QueryInterface(IEnumTfRanges* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfRanges_AddRef(IEnumTfRanges* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfRanges_Release(IEnumTfRanges* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfRanges methods ***/
+static FORCEINLINE HRESULT IEnumTfRanges_Clone(IEnumTfRanges* This,IEnumTfRanges **ppEnum) {
+    return This->lpVtbl->Clone(This,ppEnum);
+}
+static FORCEINLINE HRESULT IEnumTfRanges_Next(IEnumTfRanges* This,ULONG ulCount,ITfRange **ppRange,ULONG *pcFetched) {
+    return This->lpVtbl->Next(This,ulCount,ppRange,pcFetched);
+}
+static FORCEINLINE HRESULT IEnumTfRanges_Reset(IEnumTfRanges* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfRanges_Skip(IEnumTfRanges* This,ULONG ulCount) {
+    return This->lpVtbl->Skip(This,ulCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfRanges_Clone_Proxy(
+    IEnumTfRanges* This,
+    IEnumTfRanges **ppEnum);
+void __RPC_STUB IEnumTfRanges_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfRanges_Next_Proxy(
+    IEnumTfRanges* This,
+    ULONG ulCount,
+    ITfRange **ppRange,
+    ULONG *pcFetched);
+void __RPC_STUB IEnumTfRanges_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfRanges_Reset_Proxy(
+    IEnumTfRanges* This);
+void __RPC_STUB IEnumTfRanges_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfRanges_Skip_Proxy(
+    IEnumTfRanges* This,
+    ULONG ulCount);
+void __RPC_STUB IEnumTfRanges_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfRanges_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITfEditRecord interface
+ */
+#ifndef __ITfEditRecord_INTERFACE_DEFINED__
+#define __ITfEditRecord_INTERFACE_DEFINED__
+
+#define TF_GTP_INCL_TEXT (0x1)
+
+DEFINE_GUID(IID_ITfEditRecord, 0x42d4d099, 0x7c1a, 0x4a89, 0xb8,0x36, 0x6c,0x6f,0x22,0x16,0x0d,0xf0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("42d4d099-7c1a-4a89-b836-6c6f22160df0")
+ITfEditRecord : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetSelectionStatus(
+        WINBOOL *changed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextAndPropertyUpdates(
+        DWORD flags,
+        const GUID **props,
+        ULONG count,
+        IEnumTfRanges **ret) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfEditRecord, 0x42d4d099, 0x7c1a, 0x4a89, 0xb8,0x36, 0x6c,0x6f,0x22,0x16,0x0d,0xf0)
+#endif
+#else
+typedef struct ITfEditRecordVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfEditRecord* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfEditRecord* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfEditRecord* This);
+
+    /*** ITfEditRecord methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetSelectionStatus)(
+        ITfEditRecord* This,
+        WINBOOL *changed);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextAndPropertyUpdates)(
+        ITfEditRecord* This,
+        DWORD flags,
+        const GUID **props,
+        ULONG count,
+        IEnumTfRanges **ret);
+
+    END_INTERFACE
+} ITfEditRecordVtbl;
+interface ITfEditRecord {
+    CONST_VTBL ITfEditRecordVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfEditRecord_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfEditRecord_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfEditRecord_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfEditRecord methods ***/
+#define ITfEditRecord_GetSelectionStatus(This,changed) (This)->lpVtbl->GetSelectionStatus(This,changed)
+#define ITfEditRecord_GetTextAndPropertyUpdates(This,flags,props,count,ret) (This)->lpVtbl->GetTextAndPropertyUpdates(This,flags,props,count,ret)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfEditRecord_QueryInterface(ITfEditRecord* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfEditRecord_AddRef(ITfEditRecord* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfEditRecord_Release(ITfEditRecord* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfEditRecord methods ***/
+static FORCEINLINE HRESULT ITfEditRecord_GetSelectionStatus(ITfEditRecord* This,WINBOOL *changed) {
+    return This->lpVtbl->GetSelectionStatus(This,changed);
+}
+static FORCEINLINE HRESULT ITfEditRecord_GetTextAndPropertyUpdates(ITfEditRecord* This,DWORD flags,const GUID **props,ULONG count,IEnumTfRanges **ret) {
+    return This->lpVtbl->GetTextAndPropertyUpdates(This,flags,props,count,ret);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfEditRecord_GetSelectionStatus_Proxy(
+    ITfEditRecord* This,
+    WINBOOL *changed);
+void __RPC_STUB ITfEditRecord_GetSelectionStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfEditRecord_GetTextAndPropertyUpdates_Proxy(
+    ITfEditRecord* This,
+    DWORD flags,
+    const GUID **props,
+    ULONG count,
+    IEnumTfRanges **ret);
+void __RPC_STUB ITfEditRecord_GetTextAndPropertyUpdates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfEditRecord_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ITfTextEditSink interface
  */
 #ifndef __ITfTextEditSink_INTERFACE_DEFINED__
@@ -6603,151 +7889,6 @@
 #endif  /* __ITfPropertyStore_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
- * IEnumTfRanges interface
- */
-#ifndef __IEnumTfRanges_INTERFACE_DEFINED__
-#define __IEnumTfRanges_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_IEnumTfRanges, 0xf99d3f40, 0x8e32, 0x11d2, 0xbf,0x46, 0x00,0x10,0x5a,0x27,0x99,0xb5);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-MIDL_INTERFACE("f99d3f40-8e32-11d2-bf46-00105a2799b5")
-IEnumTfRanges : public IUnknown
-{
-    virtual HRESULT STDMETHODCALLTYPE Clone(
-        IEnumTfRanges **ppEnum) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE Next(
-        ULONG ulCount,
-        ITfRange **ppRange,
-        ULONG *pcFetched) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE Reset(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE Skip(
-        ULONG ulCount) = 0;
-
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IEnumTfRanges, 0xf99d3f40, 0x8e32, 0x11d2, 0xbf,0x46, 0x00,0x10,0x5a,0x27,0x99,0xb5)
-#endif
-#else
-typedef struct IEnumTfRangesVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumTfRanges* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumTfRanges* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumTfRanges* This);
-
-    /*** IEnumTfRanges methods ***/
-    HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumTfRanges* This,
-        IEnumTfRanges **ppEnum);
-
-    HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumTfRanges* This,
-        ULONG ulCount,
-        ITfRange **ppRange,
-        ULONG *pcFetched);
-
-    HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumTfRanges* This);
-
-    HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumTfRanges* This,
-        ULONG ulCount);
-
-    END_INTERFACE
-} IEnumTfRangesVtbl;
-interface IEnumTfRanges {
-    CONST_VTBL IEnumTfRangesVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-#ifndef WIDL_C_INLINE_WRAPPERS
-/*** IUnknown methods ***/
-#define IEnumTfRanges_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IEnumTfRanges_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IEnumTfRanges_Release(This) (This)->lpVtbl->Release(This)
-/*** IEnumTfRanges methods ***/
-#define IEnumTfRanges_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
-#define IEnumTfRanges_Next(This,ulCount,ppRange,pcFetched) (This)->lpVtbl->Next(This,ulCount,ppRange,pcFetched)
-#define IEnumTfRanges_Reset(This) (This)->lpVtbl->Reset(This)
-#define IEnumTfRanges_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
-#else
-/*** IUnknown methods ***/
-static FORCEINLINE HRESULT IEnumTfRanges_QueryInterface(IEnumTfRanges* This,REFIID riid,void **ppvObject) {
-    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
-}
-static FORCEINLINE ULONG IEnumTfRanges_AddRef(IEnumTfRanges* This) {
-    return This->lpVtbl->AddRef(This);
-}
-static FORCEINLINE ULONG IEnumTfRanges_Release(IEnumTfRanges* This) {
-    return This->lpVtbl->Release(This);
-}
-/*** IEnumTfRanges methods ***/
-static FORCEINLINE HRESULT IEnumTfRanges_Clone(IEnumTfRanges* This,IEnumTfRanges **ppEnum) {
-    return This->lpVtbl->Clone(This,ppEnum);
-}
-static FORCEINLINE HRESULT IEnumTfRanges_Next(IEnumTfRanges* This,ULONG ulCount,ITfRange **ppRange,ULONG *pcFetched) {
-    return This->lpVtbl->Next(This,ulCount,ppRange,pcFetched);
-}
-static FORCEINLINE HRESULT IEnumTfRanges_Reset(IEnumTfRanges* This) {
-    return This->lpVtbl->Reset(This);
-}
-static FORCEINLINE HRESULT IEnumTfRanges_Skip(IEnumTfRanges* This,ULONG ulCount) {
-    return This->lpVtbl->Skip(This,ulCount);
-}
-#endif
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE IEnumTfRanges_Clone_Proxy(
-    IEnumTfRanges* This,
-    IEnumTfRanges **ppEnum);
-void __RPC_STUB IEnumTfRanges_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTfRanges_Next_Proxy(
-    IEnumTfRanges* This,
-    ULONG ulCount,
-    ITfRange **ppRange,
-    ULONG *pcFetched);
-void __RPC_STUB IEnumTfRanges_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTfRanges_Reset_Proxy(
-    IEnumTfRanges* This);
-void __RPC_STUB IEnumTfRanges_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTfRanges_Skip_Proxy(
-    IEnumTfRanges* This,
-    ULONG ulCount);
-void __RPC_STUB IEnumTfRanges_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __IEnumTfRanges_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
  * IEnumITfCompositionView interface
  */
 #ifndef __IEnumITfCompositionView_INTERFACE_DEFINED__
@@ -8691,6 +9832,461 @@
 #endif  /* __IEnumTfDocumentMgrs_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * ITfUIElement interface
+ */
+#ifndef __ITfUIElement_INTERFACE_DEFINED__
+#define __ITfUIElement_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfUIElement, 0xea1ea137, 0x19df, 0x11d7, 0xa6,0xd2, 0x00,0x06,0x5b,0x84,0x43,0x5c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ea1ea137-19df-11d7-a6d2-00065b84435c")
+ITfUIElement : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDescription(
+        BSTR *description) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGUID(
+        GUID *guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Show(
+        WINBOOL show) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsShown(
+        WINBOOL *show) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfUIElement, 0xea1ea137, 0x19df, 0x11d7, 0xa6,0xd2, 0x00,0x06,0x5b,0x84,0x43,0x5c)
+#endif
+#else
+typedef struct ITfUIElementVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfUIElement* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfUIElement* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfUIElement* This);
+
+    /*** ITfUIElement methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        ITfUIElement* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *GetGUID)(
+        ITfUIElement* This,
+        GUID *guid);
+
+    HRESULT (STDMETHODCALLTYPE *Show)(
+        ITfUIElement* This,
+        WINBOOL show);
+
+    HRESULT (STDMETHODCALLTYPE *IsShown)(
+        ITfUIElement* This,
+        WINBOOL *show);
+
+    END_INTERFACE
+} ITfUIElementVtbl;
+interface ITfUIElement {
+    CONST_VTBL ITfUIElementVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfUIElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfUIElement_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfUIElement_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfUIElement methods ***/
+#define ITfUIElement_GetDescription(This,description) (This)->lpVtbl->GetDescription(This,description)
+#define ITfUIElement_GetGUID(This,guid) (This)->lpVtbl->GetGUID(This,guid)
+#define ITfUIElement_Show(This,show) (This)->lpVtbl->Show(This,show)
+#define ITfUIElement_IsShown(This,show) (This)->lpVtbl->IsShown(This,show)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfUIElement_QueryInterface(ITfUIElement* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfUIElement_AddRef(ITfUIElement* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfUIElement_Release(ITfUIElement* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfUIElement methods ***/
+static FORCEINLINE HRESULT ITfUIElement_GetDescription(ITfUIElement* This,BSTR *description) {
+    return This->lpVtbl->GetDescription(This,description);
+}
+static FORCEINLINE HRESULT ITfUIElement_GetGUID(ITfUIElement* This,GUID *guid) {
+    return This->lpVtbl->GetGUID(This,guid);
+}
+static FORCEINLINE HRESULT ITfUIElement_Show(ITfUIElement* This,WINBOOL show) {
+    return This->lpVtbl->Show(This,show);
+}
+static FORCEINLINE HRESULT ITfUIElement_IsShown(ITfUIElement* This,WINBOOL *show) {
+    return This->lpVtbl->IsShown(This,show);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfUIElement_GetDescription_Proxy(
+    ITfUIElement* This,
+    BSTR *description);
+void __RPC_STUB ITfUIElement_GetDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElement_GetGUID_Proxy(
+    ITfUIElement* This,
+    GUID *guid);
+void __RPC_STUB ITfUIElement_GetGUID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElement_Show_Proxy(
+    ITfUIElement* This,
+    WINBOOL show);
+void __RPC_STUB ITfUIElement_Show_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElement_IsShown_Proxy(
+    ITfUIElement* This,
+    WINBOOL *show);
+void __RPC_STUB ITfUIElement_IsShown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfUIElement_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTfUIElements interface
+ */
+#ifndef __IEnumTfUIElements_INTERFACE_DEFINED__
+#define __IEnumTfUIElements_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTfUIElements, 0x887aa91e, 0xacba, 0x4931, 0x84,0xda, 0x3c,0x52,0x08,0xcf,0x54,0x3f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("887aa91e-acba-4931-84da-3c5208cf543f")
+IEnumTfUIElements : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTfUIElements **enum_elements) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG count,
+        ITfUIElement **element,
+        ULONG fetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG count) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTfUIElements, 0x887aa91e, 0xacba, 0x4931, 0x84,0xda, 0x3c,0x52,0x08,0xcf,0x54,0x3f)
+#endif
+#else
+typedef struct IEnumTfUIElementsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTfUIElements* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTfUIElements* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTfUIElements* This);
+
+    /*** IEnumTfUIElements methods ***/
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTfUIElements* This,
+        IEnumTfUIElements **enum_elements);
+
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTfUIElements* This,
+        ULONG count,
+        ITfUIElement **element,
+        ULONG fetched);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTfUIElements* This);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTfUIElements* This,
+        ULONG count);
+
+    END_INTERFACE
+} IEnumTfUIElementsVtbl;
+interface IEnumTfUIElements {
+    CONST_VTBL IEnumTfUIElementsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTfUIElements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTfUIElements_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTfUIElements_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTfUIElements methods ***/
+#define IEnumTfUIElements_Clone(This,enum_elements) (This)->lpVtbl->Clone(This,enum_elements)
+#define IEnumTfUIElements_Next(This,count,element,fetched) (This)->lpVtbl->Next(This,count,element,fetched)
+#define IEnumTfUIElements_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTfUIElements_Skip(This,count) (This)->lpVtbl->Skip(This,count)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTfUIElements_QueryInterface(IEnumTfUIElements* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTfUIElements_AddRef(IEnumTfUIElements* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTfUIElements_Release(IEnumTfUIElements* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTfUIElements methods ***/
+static FORCEINLINE HRESULT IEnumTfUIElements_Clone(IEnumTfUIElements* This,IEnumTfUIElements **enum_elements) {
+    return This->lpVtbl->Clone(This,enum_elements);
+}
+static FORCEINLINE HRESULT IEnumTfUIElements_Next(IEnumTfUIElements* This,ULONG count,ITfUIElement **element,ULONG fetched) {
+    return This->lpVtbl->Next(This,count,element,fetched);
+}
+static FORCEINLINE HRESULT IEnumTfUIElements_Reset(IEnumTfUIElements* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTfUIElements_Skip(IEnumTfUIElements* This,ULONG count) {
+    return This->lpVtbl->Skip(This,count);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTfUIElements_Clone_Proxy(
+    IEnumTfUIElements* This,
+    IEnumTfUIElements **enum_elements);
+void __RPC_STUB IEnumTfUIElements_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfUIElements_Next_Proxy(
+    IEnumTfUIElements* This,
+    ULONG count,
+    ITfUIElement **element,
+    ULONG fetched);
+void __RPC_STUB IEnumTfUIElements_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfUIElements_Reset_Proxy(
+    IEnumTfUIElements* This);
+void __RPC_STUB IEnumTfUIElements_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTfUIElements_Skip_Proxy(
+    IEnumTfUIElements* This,
+    ULONG count);
+void __RPC_STUB IEnumTfUIElements_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTfUIElements_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITfUIElementMgr interface
+ */
+#ifndef __ITfUIElementMgr_INTERFACE_DEFINED__
+#define __ITfUIElementMgr_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITfUIElementMgr, 0xea1ea135, 0x19df, 0x11d7, 0xa6,0xd2, 0x00,0x06,0x5b,0x84,0x43,0x5c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ea1ea135-19df-11d7-a6d2-00065b84435c")
+ITfUIElementMgr : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE BeginUIElement(
+        ITfUIElement *element,
+        WINBOOL *show,
+        DWORD *id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateUIElement(
+        DWORD id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndUIElement(
+        DWORD id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUIElement(
+        DWORD id,
+        ITfUIElement **element) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumUIElements(
+        IEnumTfUIElements **enum_elements) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITfUIElementMgr, 0xea1ea135, 0x19df, 0x11d7, 0xa6,0xd2, 0x00,0x06,0x5b,0x84,0x43,0x5c)
+#endif
+#else
+typedef struct ITfUIElementMgrVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITfUIElementMgr* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITfUIElementMgr* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITfUIElementMgr* This);
+
+    /*** ITfUIElementMgr methods ***/
+    HRESULT (STDMETHODCALLTYPE *BeginUIElement)(
+        ITfUIElementMgr* This,
+        ITfUIElement *element,
+        WINBOOL *show,
+        DWORD *id);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateUIElement)(
+        ITfUIElementMgr* This,
+        DWORD id);
+
+    HRESULT (STDMETHODCALLTYPE *EndUIElement)(
+        ITfUIElementMgr* This,
+        DWORD id);
+
+    HRESULT (STDMETHODCALLTYPE *GetUIElement)(
+        ITfUIElementMgr* This,
+        DWORD id,
+        ITfUIElement **element);
+
+    HRESULT (STDMETHODCALLTYPE *EnumUIElements)(
+        ITfUIElementMgr* This,
+        IEnumTfUIElements **enum_elements);
+
+    END_INTERFACE
+} ITfUIElementMgrVtbl;
+interface ITfUIElementMgr {
+    CONST_VTBL ITfUIElementMgrVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITfUIElementMgr_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITfUIElementMgr_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITfUIElementMgr_Release(This) (This)->lpVtbl->Release(This)
+/*** ITfUIElementMgr methods ***/
+#define ITfUIElementMgr_BeginUIElement(This,element,show,id) (This)->lpVtbl->BeginUIElement(This,element,show,id)
+#define ITfUIElementMgr_UpdateUIElement(This,id) (This)->lpVtbl->UpdateUIElement(This,id)
+#define ITfUIElementMgr_EndUIElement(This,id) (This)->lpVtbl->EndUIElement(This,id)
+#define ITfUIElementMgr_GetUIElement(This,id,element) (This)->lpVtbl->GetUIElement(This,id,element)
+#define ITfUIElementMgr_EnumUIElements(This,enum_elements) (This)->lpVtbl->EnumUIElements(This,enum_elements)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITfUIElementMgr_QueryInterface(ITfUIElementMgr* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITfUIElementMgr_AddRef(ITfUIElementMgr* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITfUIElementMgr_Release(ITfUIElementMgr* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITfUIElementMgr methods ***/
+static FORCEINLINE HRESULT ITfUIElementMgr_BeginUIElement(ITfUIElementMgr* This,ITfUIElement *element,WINBOOL *show,DWORD *id) {
+    return This->lpVtbl->BeginUIElement(This,element,show,id);
+}
+static FORCEINLINE HRESULT ITfUIElementMgr_UpdateUIElement(ITfUIElementMgr* This,DWORD id) {
+    return This->lpVtbl->UpdateUIElement(This,id);
+}
+static FORCEINLINE HRESULT ITfUIElementMgr_EndUIElement(ITfUIElementMgr* This,DWORD id) {
+    return This->lpVtbl->EndUIElement(This,id);
+}
+static FORCEINLINE HRESULT ITfUIElementMgr_GetUIElement(ITfUIElementMgr* This,DWORD id,ITfUIElement **element) {
+    return This->lpVtbl->GetUIElement(This,id,element);
+}
+static FORCEINLINE HRESULT ITfUIElementMgr_EnumUIElements(ITfUIElementMgr* This,IEnumTfUIElements **enum_elements) {
+    return This->lpVtbl->EnumUIElements(This,enum_elements);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITfUIElementMgr_BeginUIElement_Proxy(
+    ITfUIElementMgr* This,
+    ITfUIElement *element,
+    WINBOOL *show,
+    DWORD *id);
+void __RPC_STUB ITfUIElementMgr_BeginUIElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElementMgr_UpdateUIElement_Proxy(
+    ITfUIElementMgr* This,
+    DWORD id);
+void __RPC_STUB ITfUIElementMgr_UpdateUIElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElementMgr_EndUIElement_Proxy(
+    ITfUIElementMgr* This,
+    DWORD id);
+void __RPC_STUB ITfUIElementMgr_EndUIElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElementMgr_GetUIElement_Proxy(
+    ITfUIElementMgr* This,
+    DWORD id,
+    ITfUIElement **element);
+void __RPC_STUB ITfUIElementMgr_GetUIElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITfUIElementMgr_EnumUIElements_Proxy(
+    ITfUIElementMgr* This,
+    IEnumTfUIElements **enum_elements);
+void __RPC_STUB ITfUIElementMgr_EnumUIElements_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITfUIElementMgr_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * ITfSourceSingle interface
  */
 #ifndef __ITfSourceSingle_INTERFACE_DEFINED__
@@ -9316,14 +10912,14 @@
 
 /* Begin additional prototypes for all interfaces */
 
-ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
-unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
-unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
-void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
 ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
 unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
 unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
diff --git a/x86_64-w64-mingw32/include/msctfmonitorapi.h b/x86_64-w64-mingw32/include/msctfmonitorapi.h
index cae9016..39c51a4 100644
--- a/x86_64-w64-mingw32/include/msctfmonitorapi.h
+++ b/x86_64-w64-mingw32/include/msctfmonitorapi.h
@@ -23,4 +23,4 @@
 
 #endif /*(_WIN32_WINNT >= 0x0600)*/
 
-#endif _INC_MSCTFMONITORAPI
+#endif /* _INC_MSCTFMONITORAPI */
diff --git a/x86_64-w64-mingw32/include/mshtml.h b/x86_64-w64-mingw32/include/mshtml.h
index 1f82429..b7bb03d 100644
--- a/x86_64-w64-mingw32/include/mshtml.h
+++ b/x86_64-w64-mingw32/include/mshtml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/mshtml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/mshtml.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/msinkaut.h b/x86_64-w64-mingw32/include/msinkaut.h
new file mode 100644
index 0000000..fadab56
--- /dev/null
+++ b/x86_64-w64-mingw32/include/msinkaut.h
@@ -0,0 +1,7850 @@
+/*** Autogenerated by WIDL 1.6 from include/msinkaut.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __msinkaut_h__
+#define __msinkaut_h__
+
+/* Forward declarations */
+
+#ifndef __IInkExtendedProperty_FWD_DEFINED__
+#define __IInkExtendedProperty_FWD_DEFINED__
+typedef interface IInkExtendedProperty IInkExtendedProperty;
+#endif
+
+#ifndef __IInkExtendedProperties_FWD_DEFINED__
+#define __IInkExtendedProperties_FWD_DEFINED__
+typedef interface IInkExtendedProperties IInkExtendedProperties;
+#endif
+
+#ifndef __IInkDrawingAttributes_FWD_DEFINED__
+#define __IInkDrawingAttributes_FWD_DEFINED__
+typedef interface IInkDrawingAttributes IInkDrawingAttributes;
+#endif
+
+#ifndef __IInkRectangle_FWD_DEFINED__
+#define __IInkRectangle_FWD_DEFINED__
+typedef interface IInkRectangle IInkRectangle;
+#endif
+
+#ifndef __IInkTablet_FWD_DEFINED__
+#define __IInkTablet_FWD_DEFINED__
+typedef interface IInkTablet IInkTablet;
+#endif
+
+#ifndef __IInkCursorButton_FWD_DEFINED__
+#define __IInkCursorButton_FWD_DEFINED__
+typedef interface IInkCursorButton IInkCursorButton;
+#endif
+
+#ifndef __IInkCursorButtons_FWD_DEFINED__
+#define __IInkCursorButtons_FWD_DEFINED__
+typedef interface IInkCursorButtons IInkCursorButtons;
+#endif
+
+#ifndef __IInkCursor_FWD_DEFINED__
+#define __IInkCursor_FWD_DEFINED__
+typedef interface IInkCursor IInkCursor;
+#endif
+
+#ifndef __IInkTransform_FWD_DEFINED__
+#define __IInkTransform_FWD_DEFINED__
+typedef interface IInkTransform IInkTransform;
+#endif
+
+#ifndef __IInkRecognitionAlternates_FWD_DEFINED__
+#define __IInkRecognitionAlternates_FWD_DEFINED__
+typedef interface IInkRecognitionAlternates IInkRecognitionAlternates;
+#endif
+
+#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
+#define __IInkRecognitionAlternate_FWD_DEFINED__
+typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
+#endif
+
+#ifndef __IInkRecognitionResult_FWD_DEFINED__
+#define __IInkRecognitionResult_FWD_DEFINED__
+typedef interface IInkRecognitionResult IInkRecognitionResult;
+#endif
+
+#ifndef __IInkStrokeDisp_FWD_DEFINED__
+#define __IInkStrokeDisp_FWD_DEFINED__
+typedef interface IInkStrokeDisp IInkStrokeDisp;
+#endif
+
+#ifndef __IInkCustomStrokes_FWD_DEFINED__
+#define __IInkCustomStrokes_FWD_DEFINED__
+typedef interface IInkCustomStrokes IInkCustomStrokes;
+#endif
+
+#ifndef __IInkDisp_FWD_DEFINED__
+#define __IInkDisp_FWD_DEFINED__
+typedef interface IInkDisp IInkDisp;
+#endif
+
+#ifndef __IInkStrokes_FWD_DEFINED__
+#define __IInkStrokes_FWD_DEFINED__
+typedef interface IInkStrokes IInkStrokes;
+#endif
+
+#ifndef __IInkRenderer_FWD_DEFINED__
+#define __IInkRenderer_FWD_DEFINED__
+typedef interface IInkRenderer IInkRenderer;
+#endif
+
+#ifndef __IInkCursors_FWD_DEFINED__
+#define __IInkCursors_FWD_DEFINED__
+typedef interface IInkCursors IInkCursors;
+#endif
+
+#ifndef __IInkCollector_FWD_DEFINED__
+#define __IInkCollector_FWD_DEFINED__
+typedef interface IInkCollector IInkCollector;
+#endif
+
+#ifndef ___IInkCollectorEvents_FWD_DEFINED__
+#define ___IInkCollectorEvents_FWD_DEFINED__
+typedef interface _IInkCollectorEvents _IInkCollectorEvents;
+#endif
+
+#ifndef __InkCollector_FWD_DEFINED__
+#define __InkCollector_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class InkCollector InkCollector;
+#else
+typedef struct InkCollector InkCollector;
+#endif /* defined __cplusplus */
+#endif /* defined __InkCollector_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+#include <tpcshrd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum InkRasterOperation {
+    IRO_Black = 1,
+    IRO_NotMergePen = 2,
+    IRO_MaskNotPen = 3,
+    IRO_NotCopyPen = 4,
+    IRO_MaskPenNot = 5,
+    IRO_Not = 6,
+    IRO_XOrPen = 7,
+    IRO_NotMaskPen = 8,
+    IRO_MaskPen = 9,
+    IRO_NotXOrPen = 10,
+    IRO_NoOperation = 11,
+    IRO_MergeNotPen = 12,
+    IRO_CopyPen = 13,
+    IRO_MergePenNot = 14,
+    IRO_MergePen = 15,
+    IRO_White = 16
+} InkRasterOperation;
+typedef enum InkPenTip {
+    IPT_Ball = 0,
+    IPT_Rectangle = 1
+} InkPenTip;
+typedef enum TabletHardwareCapabilities {
+    THWC_Integrated = 0x1,
+    THWC_CursorMustTouch = 0x2,
+    THWC_HardProximity = 0x4,
+    THWC_CursorsHavePhysicalIds = 0x8
+} TabletHardwareCapabilities;
+typedef enum TabletPropertyMetricUnit {
+    TPMU_Default = 0,
+    TPMU_Inches = 1,
+    TPMU_Centimeters = 2,
+    TPMU_Degrees = 3,
+    TPMU_Radians = 4,
+    TPMU_Seconds = 5,
+    TPMU_Pounds = 6,
+    TPMU_Grams = 7
+} TabletPropertyMetricUnit;
+typedef enum InkCursorButtonState {
+    ICBS_Unavailable = 0,
+    ICBS_Up = 1,
+    ICBS_Down = 2
+} InkCursorButtonState;
+typedef enum InkRecognitionConfidence {
+    IRC_Strong = 0,
+    IRC_Intermediate = 1,
+    IRC_Poor = 2
+} InkRecognitionConfidence;
+typedef enum InkBoundingBoxMode {
+    IBBM_Default = 0,
+    IBBM_NoCurveFit = 1,
+    IBBM_CurveFit = 2,
+    IBBM_PointsOnly = 3,
+    IBBM_Union = 4
+} InkBoundingBoxMode;
+typedef enum InkExtractFlags {
+    IEF_CopyFromOriginal = 0,
+    IEF_RemoveFromOriginal = 1,
+    IEF_Default = IEF_RemoveFromOriginal
+} InkExtractFlags;
+typedef enum InkPersistenceFormat {
+    IPF_InkSerializedFormat = 0,
+    IPF_Base64InkSerializedFormat = 1,
+    IPF_GIF = 2,
+    IPF_Base64GIF = 3
+} InkPersistenceFormat;
+typedef enum InkPersistenceCompressionMode {
+    IPCM_Default = 0,
+    IPCM_MaximumCompression = 1,
+    IPCM_NoCompression = 2
+} InkPersistenceCompressionMode;
+typedef enum InkClipboardFormats {
+    ICF_None = 0x0,
+    ICF_InkSerializedFormat = 0x1,
+    ICF_SketchInk = 0x2,
+    ICF_TextInk = 0x6,
+    ICF_EnhancedMetafile = 0x8,
+    ICF_Metafile = 0x20,
+    ICF_Bitmap = 0x40,
+    ICF_PasteMask = 0x7,
+    ICF_CopyMask = 0x7f,
+    ICF_Default = ICF_CopyMask
+} InkClipboardFormats;
+typedef enum InkClipboardModes {
+    ICB_Copy = 0x0,
+    ICB_Cut = 0x1,
+    ICB_ExtractOnly = 0x30,
+    ICB_DelayedCopy = 0x20,
+    ICB_Default = ICB_Copy
+} InkClipboardModes;
+typedef enum InkCollectionMode {
+    ICM_InkOnly = 0,
+    ICM_GestureOnly = 1,
+    ICM_InkAndGesture = 2
+} InkCollectionMode;
+typedef enum InkMousePointer {
+    IMP_Default = 0,
+    IMP_Arrow = 1,
+    IMP_Crosshair = 2,
+    IMP_Ibeam = 3,
+    IMP_SizeNESW = 4,
+    IMP_SizeNS = 5,
+    IMP_SizeNWSE = 6,
+    IMP_SizeWE = 7,
+    IMP_UpArrow = 8,
+    IMP_Hourglass = 9,
+    IMP_NoDrop = 10,
+    IMP_ArrowHourglass = 11,
+    IMP_ArrowQuestion = 12,
+    IMP_SizeAll = 13,
+    IMP_Hand = 14,
+    IMP_Custom = 99
+} InkMousePointer;
+typedef enum InkApplicationGesture {
+    IAG_AllGestures = 0x0,
+    IAG_NoGesture = 0xf000,
+    IAG_Scratchout = 0xf001,
+    IAG_Triangle = 0xf002,
+    IAG_Square = 0xf003,
+    IAG_Star = 0xf004,
+    IAG_Check = 0xf005,
+    IAG_Curlicue = 0xf010,
+    IAG_DoubleCurlicue = 0xf011,
+    IAG_Circle = 0xf020,
+    IAG_DoubleCircle = 0xf021,
+    IAG_SemiCircleLeft = 0xf028,
+    IAG_SemiCircleRight = 0xf029,
+    IAG_ChevronUp = 0xf030,
+    IAG_ChevronDown = 0xf031,
+    IAG_ChevronLeft = 0xf032,
+    IAG_ChevronRight = 0xf033,
+    IAG_ArrowUp = 0xf038,
+    IAG_ArrowDown = 0xf039,
+    IAG_ArrowLeft = 0xf03a,
+    IAG_ArrowRight = 0xf03b,
+    IAG_Up = 0xf058,
+    IAG_Down = 0xf059,
+    IAG_Left = 0xf05a,
+    IAG_Right = 0xf05b,
+    IAG_UpDown = 0xf060,
+    IAG_DownUp = 0xf061,
+    IAG_LeftRight = 0xf062,
+    IAG_RightLeft = 0xf063,
+    IAG_UpLeftLong = 0xf064,
+    IAG_UpRightLong = 0xf065,
+    IAG_DownLeftLong = 0xf066,
+    IAG_DownRightLong = 0xf067,
+    IAG_UpLeft = 0xf068,
+    IAG_UpRight = 0xf069,
+    IAG_DownLeft = 0xf06a,
+    IAG_DownRight = 0xf06b,
+    IAG_LeftUp = 0xf06c,
+    IAG_LeftDown = 0xf06d,
+    IAG_RightUp = 0xf06e,
+    IAG_RightDown = 0xf06f,
+    IAG_Exclamation = 0xf0a4,
+    IAG_Tap = 0xf0f0,
+    IAG_DoubleTap = 0xf0f1
+} InkApplicationGesture;
+typedef enum InkCollectorEventInterest {
+    ICEI_DefaultEvents = -1,
+    ICEI_CursorDown = ICEI_DefaultEvents + 1,
+    ICEI_Stroke = ICEI_CursorDown + 1,
+    ICEI_NewPackets = ICEI_Stroke + 1,
+    ICEI_NewInAirPackets = ICEI_NewPackets + 1,
+    ICEI_CursorButtonDown = ICEI_NewInAirPackets + 1,
+    ICEI_CursorButtonUp = ICEI_CursorButtonDown + 1,
+    ICEI_CursorInRange = ICEI_CursorButtonUp + 1,
+    ICEI_CursorOutOfRange = ICEI_CursorInRange + 1,
+    ICEI_SystemGesture = ICEI_CursorOutOfRange + 1,
+    ICEI_TabletAdded = ICEI_SystemGesture + 1,
+    ICEI_TabletRemoved = ICEI_TabletAdded + 1,
+    ICEI_MouseDown = ICEI_TabletRemoved + 1,
+    ICEI_MouseMove = ICEI_MouseDown + 1,
+    ICEI_MouseUp = ICEI_MouseMove + 1,
+    ICEI_MouseWheel = ICEI_MouseUp + 1,
+    ICEI_DblClick = ICEI_MouseWheel + 1,
+    ICEI_AllEvents = ICEI_DblClick + 1
+} InkCollectorEventInterest;
+typedef enum DISPID_InkCollectorEvent {
+    DISPID_ICEStroke = 1,
+    DISPID_ICECursorDown = DISPID_ICEStroke + 1,
+    DISPID_ICENewPackets = DISPID_ICECursorDown + 1,
+    DISPID_ICENewInAirPackets = DISPID_ICENewPackets + 1,
+    DISPID_ICECursorButtonDown = DISPID_ICENewInAirPackets + 1,
+    DISPID_ICECursorButtonUp = DISPID_ICECursorButtonDown + 1,
+    DISPID_ICECursorInRange = DISPID_ICECursorButtonUp + 1,
+    DISPID_ICECursorOutOfRange = DISPID_ICECursorInRange + 1,
+    DISPID_ICESystemGesture = DISPID_ICECursorOutOfRange + 1,
+    DISPID_ICEGesture = DISPID_ICESystemGesture + 1,
+    DISPID_ICETabletAdded = DISPID_ICEGesture + 1,
+    DISPID_ICETabletRemoved = DISPID_ICETabletAdded + 1,
+    DISPID_IOEPainting = DISPID_ICETabletRemoved + 1,
+    DISPID_IOEPainted = DISPID_IOEPainting + 1,
+    DISPID_IOESelectionChanging = DISPID_IOEPainted + 1,
+    DISPID_IOESelectionChanged = DISPID_IOESelectionChanging + 1,
+    DISPID_IOESelectionMoving = DISPID_IOESelectionChanged + 1,
+    DISPID_IOESelectionMoved = DISPID_IOESelectionMoving + 1,
+    DISPID_IOESelectionResizing = DISPID_IOESelectionMoved + 1,
+    DISPID_IOESelectionResized = DISPID_IOESelectionResizing + 1,
+    DISPID_IOEStrokesDeleting = DISPID_IOESelectionResized + 1,
+    DISPID_IOEStrokesDeleted = DISPID_IOEStrokesDeleting + 1,
+    DISPID_IPEChangeUICues = DISPID_IOEStrokesDeleted + 1,
+    DISPID_IPEClick = DISPID_IPEChangeUICues + 1,
+    DISPID_IPEDblClick = DISPID_IPEClick + 1,
+    DISPID_IPEInvalidated = DISPID_IPEDblClick + 1,
+    DISPID_IPEMouseDown = DISPID_IPEInvalidated + 1,
+    DISPID_IPEMouseEnter = DISPID_IPEMouseDown + 1,
+    DISPID_IPEMouseHover = DISPID_IPEMouseEnter + 1,
+    DISPID_IPEMouseLeave = DISPID_IPEMouseHover + 1,
+    DISPID_IPEMouseMove = DISPID_IPEMouseLeave + 1,
+    DISPID_IPEMouseUp = DISPID_IPEMouseMove + 1,
+    DISPID_IPEMouseWheel = DISPID_IPEMouseUp + 1,
+    DISPID_IPESizeModeChanged = DISPID_IPEMouseWheel + 1,
+    DISPID_IPEStyleChanged = DISPID_IPESizeModeChanged + 1,
+    DISPID_IPESystemColorsChanged = DISPID_IPEStyleChanged + 1,
+    DISPID_IPEKeyDown = DISPID_IPESystemColorsChanged + 1,
+    DISPID_IPEKeyPress = DISPID_IPEKeyDown + 1,
+    DISPID_IPEKeyUp = DISPID_IPEKeyPress + 1,
+    DISPID_IPEResize = DISPID_IPEKeyUp + 1,
+    DISPID_IPESizeChanged = DISPID_IPEResize + 1
+} DISPID_InkCollectorEvent;
+#ifndef __IInkDisp_FWD_DEFINED__
+#define __IInkDisp_FWD_DEFINED__
+typedef interface IInkDisp IInkDisp;
+#endif
+
+#ifndef __IInkStrokes_FWD_DEFINED__
+#define __IInkStrokes_FWD_DEFINED__
+typedef interface IInkStrokes IInkStrokes;
+#endif
+
+#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
+#define __IInkRecognitionAlternate_FWD_DEFINED__
+typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
+#endif
+
+/*****************************************************************************
+ * IInkExtendedProperty interface
+ */
+#ifndef __IInkExtendedProperty_INTERFACE_DEFINED__
+#define __IInkExtendedProperty_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("db489209-b7c3-411d-90f6-1548cfff271e")
+IInkExtendedProperty : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Guid(
+        BSTR *Guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        VARIANT *Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        VARIANT Data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e)
+#endif
+#else
+typedef struct IInkExtendedPropertyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkExtendedProperty* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkExtendedProperty* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkExtendedProperty* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkExtendedProperty* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkExtendedProperty* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkExtendedProperty* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkExtendedProperty* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkExtendedProperty methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Guid)(
+        IInkExtendedProperty* This,
+        BSTR *Guid);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkExtendedProperty* This,
+        VARIANT *Data);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkExtendedProperty* This,
+        VARIANT Data);
+
+    END_INTERFACE
+} IInkExtendedPropertyVtbl;
+interface IInkExtendedProperty {
+    CONST_VTBL IInkExtendedPropertyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkExtendedProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkExtendedProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkExtendedProperty_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkExtendedProperty_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkExtendedProperty_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkExtendedProperty_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkExtendedProperty_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkExtendedProperty methods ***/
+#define IInkExtendedProperty_get_Guid(This,Guid) (This)->lpVtbl->get_Guid(This,Guid)
+#define IInkExtendedProperty_get_Data(This,Data) (This)->lpVtbl->get_Data(This,Data)
+#define IInkExtendedProperty_put_Data(This,Data) (This)->lpVtbl->put_Data(This,Data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_QueryInterface(IInkExtendedProperty* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkExtendedProperty_AddRef(IInkExtendedProperty* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkExtendedProperty_Release(IInkExtendedProperty* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfoCount(IInkExtendedProperty* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfo(IInkExtendedProperty* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_GetIDsOfNames(IInkExtendedProperty* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_Invoke(IInkExtendedProperty* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkExtendedProperty methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_get_Guid(IInkExtendedProperty* This,BSTR *Guid) {
+    return This->lpVtbl->get_Guid(This,Guid);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_get_Data(IInkExtendedProperty* This,VARIANT *Data) {
+    return This->lpVtbl->get_Data(This,Data);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_put_Data(IInkExtendedProperty* This,VARIANT Data) {
+    return This->lpVtbl->put_Data(This,Data);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_get_Guid_Proxy(
+    IInkExtendedProperty* This,
+    BSTR *Guid);
+void __RPC_STUB IInkExtendedProperty_get_Guid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_get_Data_Proxy(
+    IInkExtendedProperty* This,
+    VARIANT *Data);
+void __RPC_STUB IInkExtendedProperty_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_put_Data_Proxy(
+    IInkExtendedProperty* This,
+    VARIANT Data);
+void __RPC_STUB IInkExtendedProperty_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkExtendedProperty_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkExtendedProperties interface
+ */
+#ifndef __IInkExtendedProperties_INTERFACE_DEFINED__
+#define __IInkExtendedProperties_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("89f2a8be-95a9-4530-8b8f-88e971e3e25f")
+IInkExtendedProperties : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkExtendedProperty **Item) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        BSTR Guid,
+        VARIANT Data,
+        IInkExtendedProperty **InkExtendedProperty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DoesPropertyExist(
+        BSTR Guid,
+        VARIANT_BOOL *DoesPropertyExist) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f)
+#endif
+#else
+typedef struct IInkExtendedPropertiesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkExtendedProperties* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkExtendedProperties* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkExtendedProperties* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkExtendedProperties* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkExtendedProperties* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkExtendedProperties* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkExtendedProperties* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkExtendedProperties methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkExtendedProperties* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkExtendedProperties* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkExtendedProperties* This,
+        VARIANT Identifier,
+        IInkExtendedProperty **Item);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkExtendedProperties* This,
+        BSTR Guid,
+        VARIANT Data,
+        IInkExtendedProperty **InkExtendedProperty);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkExtendedProperties* This,
+        VARIANT Identifier);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IInkExtendedProperties* This);
+
+    HRESULT (STDMETHODCALLTYPE *DoesPropertyExist)(
+        IInkExtendedProperties* This,
+        BSTR Guid,
+        VARIANT_BOOL *DoesPropertyExist);
+
+    END_INTERFACE
+} IInkExtendedPropertiesVtbl;
+interface IInkExtendedProperties {
+    CONST_VTBL IInkExtendedPropertiesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkExtendedProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkExtendedProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkExtendedProperties_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkExtendedProperties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkExtendedProperties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkExtendedProperties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkExtendedProperties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkExtendedProperties methods ***/
+#define IInkExtendedProperties_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkExtendedProperties_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkExtendedProperties_Item(This,Identifier,Item) (This)->lpVtbl->Item(This,Identifier,Item)
+#define IInkExtendedProperties_Add(This,Guid,Data,InkExtendedProperty) (This)->lpVtbl->Add(This,Guid,Data,InkExtendedProperty)
+#define IInkExtendedProperties_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
+#define IInkExtendedProperties_Clear(This) (This)->lpVtbl->Clear(This)
+#define IInkExtendedProperties_DoesPropertyExist(This,Guid,DoesPropertyExist) (This)->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_QueryInterface(IInkExtendedProperties* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkExtendedProperties_AddRef(IInkExtendedProperties* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkExtendedProperties_Release(IInkExtendedProperties* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfoCount(IInkExtendedProperties* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfo(IInkExtendedProperties* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_GetIDsOfNames(IInkExtendedProperties* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Invoke(IInkExtendedProperties* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkExtendedProperties methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_get_Count(IInkExtendedProperties* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_get__NewEnum(IInkExtendedProperties* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Item(IInkExtendedProperties* This,VARIANT Identifier,IInkExtendedProperty **Item) {
+    return This->lpVtbl->Item(This,Identifier,Item);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Add(IInkExtendedProperties* This,BSTR Guid,VARIANT Data,IInkExtendedProperty **InkExtendedProperty) {
+    return This->lpVtbl->Add(This,Guid,Data,InkExtendedProperty);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Remove(IInkExtendedProperties* This,VARIANT Identifier) {
+    return This->lpVtbl->Remove(This,Identifier);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Clear(IInkExtendedProperties* This) {
+    return This->lpVtbl->Clear(This);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_DoesPropertyExist(IInkExtendedProperties* This,BSTR Guid,VARIANT_BOOL *DoesPropertyExist) {
+    return This->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_get_Count_Proxy(
+    IInkExtendedProperties* This,
+    LONG *Count);
+void __RPC_STUB IInkExtendedProperties_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_get__NewEnum_Proxy(
+    IInkExtendedProperties* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkExtendedProperties_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Item_Proxy(
+    IInkExtendedProperties* This,
+    VARIANT Identifier,
+    IInkExtendedProperty **Item);
+void __RPC_STUB IInkExtendedProperties_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Add_Proxy(
+    IInkExtendedProperties* This,
+    BSTR Guid,
+    VARIANT Data,
+    IInkExtendedProperty **InkExtendedProperty);
+void __RPC_STUB IInkExtendedProperties_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Remove_Proxy(
+    IInkExtendedProperties* This,
+    VARIANT Identifier);
+void __RPC_STUB IInkExtendedProperties_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Clear_Proxy(
+    IInkExtendedProperties* This);
+void __RPC_STUB IInkExtendedProperties_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_DoesPropertyExist_Proxy(
+    IInkExtendedProperties* This,
+    BSTR Guid,
+    VARIANT_BOOL *DoesPropertyExist);
+void __RPC_STUB IInkExtendedProperties_DoesPropertyExist_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkExtendedProperties_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkDrawingAttributes interface
+ */
+#ifndef __IInkDrawingAttributes_INTERFACE_DEFINED__
+#define __IInkDrawingAttributes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bf519b75-0a15-4623-adc9-c00d436a8092")
+IInkDrawingAttributes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Color(
+        LONG *CurrentColor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Color(
+        LONG NewColor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Width(
+        float *CurrentWidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Width(
+        float NewWidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Height(
+        float *CurrentHeight) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Height(
+        float NewHeight) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FitToCurve(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FitToCurve(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_IgnorePressure(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_IgnorePressure(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AntiAliased(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AntiAliased(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Transparency(
+        LONG *CurrentTransparency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Transparency(
+        LONG NewTransparency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RasterOperation(
+        InkRasterOperation *CurrentRasterOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_RasterOperation(
+        InkRasterOperation NewRasterOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PenTip(
+        InkPenTip *CurrentPenTip) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PenTip(
+        InkPenTip NewPenTip) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IInkDrawingAttributes **DrawingAttributes) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92)
+#endif
+#else
+typedef struct IInkDrawingAttributesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkDrawingAttributes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkDrawingAttributes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkDrawingAttributes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkDrawingAttributes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkDrawingAttributes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkDrawingAttributes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkDrawingAttributes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkDrawingAttributes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Color)(
+        IInkDrawingAttributes* This,
+        LONG *CurrentColor);
+
+    HRESULT (STDMETHODCALLTYPE *put_Color)(
+        IInkDrawingAttributes* This,
+        LONG NewColor);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IInkDrawingAttributes* This,
+        float *CurrentWidth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IInkDrawingAttributes* This,
+        float NewWidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IInkDrawingAttributes* This,
+        float *CurrentHeight);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IInkDrawingAttributes* This,
+        float NewHeight);
+
+    HRESULT (STDMETHODCALLTYPE *get_FitToCurve)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_FitToCurve)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_IgnorePressure)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_IgnorePressure)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_AntiAliased)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_AntiAliased)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_Transparency)(
+        IInkDrawingAttributes* This,
+        LONG *CurrentTransparency);
+
+    HRESULT (STDMETHODCALLTYPE *put_Transparency)(
+        IInkDrawingAttributes* This,
+        LONG NewTransparency);
+
+    HRESULT (STDMETHODCALLTYPE *get_RasterOperation)(
+        IInkDrawingAttributes* This,
+        InkRasterOperation *CurrentRasterOperation);
+
+    HRESULT (STDMETHODCALLTYPE *put_RasterOperation)(
+        IInkDrawingAttributes* This,
+        InkRasterOperation NewRasterOperation);
+
+    HRESULT (STDMETHODCALLTYPE *get_PenTip)(
+        IInkDrawingAttributes* This,
+        InkPenTip *CurrentPenTip);
+
+    HRESULT (STDMETHODCALLTYPE *put_PenTip)(
+        IInkDrawingAttributes* This,
+        InkPenTip NewPenTip);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkDrawingAttributes* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IInkDrawingAttributes* This,
+        IInkDrawingAttributes **DrawingAttributes);
+
+    END_INTERFACE
+} IInkDrawingAttributesVtbl;
+interface IInkDrawingAttributes {
+    CONST_VTBL IInkDrawingAttributesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkDrawingAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkDrawingAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkDrawingAttributes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkDrawingAttributes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkDrawingAttributes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkDrawingAttributes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkDrawingAttributes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkDrawingAttributes methods ***/
+#define IInkDrawingAttributes_get_Color(This,CurrentColor) (This)->lpVtbl->get_Color(This,CurrentColor)
+#define IInkDrawingAttributes_put_Color(This,NewColor) (This)->lpVtbl->put_Color(This,NewColor)
+#define IInkDrawingAttributes_get_Width(This,CurrentWidth) (This)->lpVtbl->get_Width(This,CurrentWidth)
+#define IInkDrawingAttributes_put_Width(This,NewWidth) (This)->lpVtbl->put_Width(This,NewWidth)
+#define IInkDrawingAttributes_get_Height(This,CurrentHeight) (This)->lpVtbl->get_Height(This,CurrentHeight)
+#define IInkDrawingAttributes_put_Height(This,NewHeight) (This)->lpVtbl->put_Height(This,NewHeight)
+#define IInkDrawingAttributes_get_FitToCurve(This,Flag) (This)->lpVtbl->get_FitToCurve(This,Flag)
+#define IInkDrawingAttributes_put_FitToCurve(This,Flag) (This)->lpVtbl->put_FitToCurve(This,Flag)
+#define IInkDrawingAttributes_get_IgnorePressure(This,Flag) (This)->lpVtbl->get_IgnorePressure(This,Flag)
+#define IInkDrawingAttributes_put_IgnorePressure(This,Flag) (This)->lpVtbl->put_IgnorePressure(This,Flag)
+#define IInkDrawingAttributes_get_AntiAliased(This,Flag) (This)->lpVtbl->get_AntiAliased(This,Flag)
+#define IInkDrawingAttributes_put_AntiAliased(This,Flag) (This)->lpVtbl->put_AntiAliased(This,Flag)
+#define IInkDrawingAttributes_get_Transparency(This,CurrentTransparency) (This)->lpVtbl->get_Transparency(This,CurrentTransparency)
+#define IInkDrawingAttributes_put_Transparency(This,NewTransparency) (This)->lpVtbl->put_Transparency(This,NewTransparency)
+#define IInkDrawingAttributes_get_RasterOperation(This,CurrentRasterOperation) (This)->lpVtbl->get_RasterOperation(This,CurrentRasterOperation)
+#define IInkDrawingAttributes_put_RasterOperation(This,NewRasterOperation) (This)->lpVtbl->put_RasterOperation(This,NewRasterOperation)
+#define IInkDrawingAttributes_get_PenTip(This,CurrentPenTip) (This)->lpVtbl->get_PenTip(This,CurrentPenTip)
+#define IInkDrawingAttributes_put_PenTip(This,NewPenTip) (This)->lpVtbl->put_PenTip(This,NewPenTip)
+#define IInkDrawingAttributes_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkDrawingAttributes_Clone(This,DrawingAttributes) (This)->lpVtbl->Clone(This,DrawingAttributes)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_QueryInterface(IInkDrawingAttributes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkDrawingAttributes_AddRef(IInkDrawingAttributes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkDrawingAttributes_Release(IInkDrawingAttributes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfoCount(IInkDrawingAttributes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfo(IInkDrawingAttributes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetIDsOfNames(IInkDrawingAttributes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_Invoke(IInkDrawingAttributes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkDrawingAttributes methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Color(IInkDrawingAttributes* This,LONG *CurrentColor) {
+    return This->lpVtbl->get_Color(This,CurrentColor);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Color(IInkDrawingAttributes* This,LONG NewColor) {
+    return This->lpVtbl->put_Color(This,NewColor);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Width(IInkDrawingAttributes* This,float *CurrentWidth) {
+    return This->lpVtbl->get_Width(This,CurrentWidth);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Width(IInkDrawingAttributes* This,float NewWidth) {
+    return This->lpVtbl->put_Width(This,NewWidth);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Height(IInkDrawingAttributes* This,float *CurrentHeight) {
+    return This->lpVtbl->get_Height(This,CurrentHeight);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Height(IInkDrawingAttributes* This,float NewHeight) {
+    return This->lpVtbl->put_Height(This,NewHeight);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_FitToCurve(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_FitToCurve(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_IgnorePressure(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_IgnorePressure(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_AntiAliased(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_AntiAliased(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Transparency(IInkDrawingAttributes* This,LONG *CurrentTransparency) {
+    return This->lpVtbl->get_Transparency(This,CurrentTransparency);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Transparency(IInkDrawingAttributes* This,LONG NewTransparency) {
+    return This->lpVtbl->put_Transparency(This,NewTransparency);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation *CurrentRasterOperation) {
+    return This->lpVtbl->get_RasterOperation(This,CurrentRasterOperation);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation NewRasterOperation) {
+    return This->lpVtbl->put_RasterOperation(This,NewRasterOperation);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_PenTip(IInkDrawingAttributes* This,InkPenTip *CurrentPenTip) {
+    return This->lpVtbl->get_PenTip(This,CurrentPenTip);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_PenTip(IInkDrawingAttributes* This,InkPenTip NewPenTip) {
+    return This->lpVtbl->put_PenTip(This,NewPenTip);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_ExtendedProperties(IInkDrawingAttributes* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_Clone(IInkDrawingAttributes* This,IInkDrawingAttributes **DrawingAttributes) {
+    return This->lpVtbl->Clone(This,DrawingAttributes);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Color_Proxy(
+    IInkDrawingAttributes* This,
+    LONG *CurrentColor);
+void __RPC_STUB IInkDrawingAttributes_get_Color_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Color_Proxy(
+    IInkDrawingAttributes* This,
+    LONG NewColor);
+void __RPC_STUB IInkDrawingAttributes_put_Color_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Width_Proxy(
+    IInkDrawingAttributes* This,
+    float *CurrentWidth);
+void __RPC_STUB IInkDrawingAttributes_get_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Width_Proxy(
+    IInkDrawingAttributes* This,
+    float NewWidth);
+void __RPC_STUB IInkDrawingAttributes_put_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Height_Proxy(
+    IInkDrawingAttributes* This,
+    float *CurrentHeight);
+void __RPC_STUB IInkDrawingAttributes_get_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Height_Proxy(
+    IInkDrawingAttributes* This,
+    float NewHeight);
+void __RPC_STUB IInkDrawingAttributes_put_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_FitToCurve_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_FitToCurve_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_FitToCurve_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_FitToCurve_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_IgnorePressure_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_IgnorePressure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_IgnorePressure_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_IgnorePressure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_AntiAliased_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_AntiAliased_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_AntiAliased_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_AntiAliased_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Transparency_Proxy(
+    IInkDrawingAttributes* This,
+    LONG *CurrentTransparency);
+void __RPC_STUB IInkDrawingAttributes_get_Transparency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Transparency_Proxy(
+    IInkDrawingAttributes* This,
+    LONG NewTransparency);
+void __RPC_STUB IInkDrawingAttributes_put_Transparency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_RasterOperation_Proxy(
+    IInkDrawingAttributes* This,
+    InkRasterOperation *CurrentRasterOperation);
+void __RPC_STUB IInkDrawingAttributes_get_RasterOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_RasterOperation_Proxy(
+    IInkDrawingAttributes* This,
+    InkRasterOperation NewRasterOperation);
+void __RPC_STUB IInkDrawingAttributes_put_RasterOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_PenTip_Proxy(
+    IInkDrawingAttributes* This,
+    InkPenTip *CurrentPenTip);
+void __RPC_STUB IInkDrawingAttributes_get_PenTip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_PenTip_Proxy(
+    IInkDrawingAttributes* This,
+    InkPenTip NewPenTip);
+void __RPC_STUB IInkDrawingAttributes_put_PenTip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_ExtendedProperties_Proxy(
+    IInkDrawingAttributes* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkDrawingAttributes_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_Clone_Proxy(
+    IInkDrawingAttributes* This,
+    IInkDrawingAttributes **DrawingAttributes);
+void __RPC_STUB IInkDrawingAttributes_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkDrawingAttributes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRectangle interface
+ */
+#ifndef __IInkRectangle_INTERFACE_DEFINED__
+#define __IInkRectangle_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9794ff82-6071-4717-8a8b-6ac7c64a686e")
+IInkRectangle : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Top(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Top(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Left(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Left(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Bottom(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Bottom(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Right(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Right(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        RECT *Rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        RECT Rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRectangle(
+        LONG *Top,
+        LONG *Left,
+        LONG *Bottom,
+        LONG *Right) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRectangle(
+        LONG Top,
+        LONG Left,
+        LONG Bottom,
+        LONG Right) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e)
+#endif
+#else
+typedef struct IInkRectangleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRectangle* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRectangle* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRectangle* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRectangle* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRectangle* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRectangle* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRectangle* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRectangle methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Bottom)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Bottom)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Right)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Right)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkRectangle* This,
+        RECT *Rect);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkRectangle* This,
+        RECT Rect);
+
+    HRESULT (STDMETHODCALLTYPE *GetRectangle)(
+        IInkRectangle* This,
+        LONG *Top,
+        LONG *Left,
+        LONG *Bottom,
+        LONG *Right);
+
+    HRESULT (STDMETHODCALLTYPE *SetRectangle)(
+        IInkRectangle* This,
+        LONG Top,
+        LONG Left,
+        LONG Bottom,
+        LONG Right);
+
+    END_INTERFACE
+} IInkRectangleVtbl;
+interface IInkRectangle {
+    CONST_VTBL IInkRectangleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRectangle_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRectangle_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRectangle_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRectangle_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRectangle_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRectangle_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRectangle_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRectangle methods ***/
+#define IInkRectangle_get_Top(This,Units) (This)->lpVtbl->get_Top(This,Units)
+#define IInkRectangle_put_Top(This,Units) (This)->lpVtbl->put_Top(This,Units)
+#define IInkRectangle_get_Left(This,Units) (This)->lpVtbl->get_Left(This,Units)
+#define IInkRectangle_put_Left(This,Units) (This)->lpVtbl->put_Left(This,Units)
+#define IInkRectangle_get_Bottom(This,Units) (This)->lpVtbl->get_Bottom(This,Units)
+#define IInkRectangle_put_Bottom(This,Units) (This)->lpVtbl->put_Bottom(This,Units)
+#define IInkRectangle_get_Right(This,Units) (This)->lpVtbl->get_Right(This,Units)
+#define IInkRectangle_put_Right(This,Units) (This)->lpVtbl->put_Right(This,Units)
+#define IInkRectangle_get_Data(This,Rect) (This)->lpVtbl->get_Data(This,Rect)
+#define IInkRectangle_put_Data(This,Rect) (This)->lpVtbl->put_Data(This,Rect)
+#define IInkRectangle_GetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right)
+#define IInkRectangle_SetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRectangle_QueryInterface(IInkRectangle* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRectangle_AddRef(IInkRectangle* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRectangle_Release(IInkRectangle* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRectangle_GetTypeInfoCount(IInkRectangle* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetTypeInfo(IInkRectangle* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetIDsOfNames(IInkRectangle* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRectangle_Invoke(IInkRectangle* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRectangle methods ***/
+static FORCEINLINE HRESULT IInkRectangle_get_Top(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Top(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Top(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Top(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Left(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Left(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Left(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Left(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Bottom(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Bottom(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Bottom(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Bottom(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Right(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Right(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Right(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Right(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Data(IInkRectangle* This,RECT *Rect) {
+    return This->lpVtbl->get_Data(This,Rect);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Data(IInkRectangle* This,RECT Rect) {
+    return This->lpVtbl->put_Data(This,Rect);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetRectangle(IInkRectangle* This,LONG *Top,LONG *Left,LONG *Bottom,LONG *Right) {
+    return This->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right);
+}
+static FORCEINLINE HRESULT IInkRectangle_SetRectangle(IInkRectangle* This,LONG Top,LONG Left,LONG Bottom,LONG Right) {
+    return This->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Top_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Top_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Left_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Left_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Bottom_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Bottom_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Bottom_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Bottom_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Right_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Right_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Right_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Right_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Data_Proxy(
+    IInkRectangle* This,
+    RECT *Rect);
+void __RPC_STUB IInkRectangle_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Data_Proxy(
+    IInkRectangle* This,
+    RECT Rect);
+void __RPC_STUB IInkRectangle_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_GetRectangle_Proxy(
+    IInkRectangle* This,
+    LONG *Top,
+    LONG *Left,
+    LONG *Bottom,
+    LONG *Right);
+void __RPC_STUB IInkRectangle_GetRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_SetRectangle_Proxy(
+    IInkRectangle* This,
+    LONG Top,
+    LONG Left,
+    LONG Bottom,
+    LONG Right);
+void __RPC_STUB IInkRectangle_SetRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRectangle_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkTablet interface
+ */
+#ifndef __IInkTablet_INTERFACE_DEFINED__
+#define __IInkTablet_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2de25eaa-6ef8-42d5-aee9-185bc81b912d")
+IInkTablet : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PlugAndPlayId(
+        BSTR *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaximumInputRectangle(
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HardwareCapabilities(
+        TabletHardwareCapabilities *Capabilities) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsPacketPropertySupported(
+        BSTR packetPropertyName,
+        VARIANT_BOOL *Supported) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyMetrics(
+        BSTR propertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d)
+#endif
+#else
+typedef struct IInkTabletVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkTablet* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkTablet* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkTablet* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkTablet* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkTablet* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkTablet* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkTablet* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkTablet methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkTablet* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_PlugAndPlayId)(
+        IInkTablet* This,
+        BSTR *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaximumInputRectangle)(
+        IInkTablet* This,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *get_HardwareCapabilities)(
+        IInkTablet* This,
+        TabletHardwareCapabilities *Capabilities);
+
+    HRESULT (STDMETHODCALLTYPE *IsPacketPropertySupported)(
+        IInkTablet* This,
+        BSTR packetPropertyName,
+        VARIANT_BOOL *Supported);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyMetrics)(
+        IInkTablet* This,
+        BSTR propertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution);
+
+    END_INTERFACE
+} IInkTabletVtbl;
+interface IInkTablet {
+    CONST_VTBL IInkTabletVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkTablet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkTablet_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkTablet_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkTablet_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkTablet_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkTablet_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkTablet_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkTablet methods ***/
+#define IInkTablet_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkTablet_get_PlugAndPlayId(This,Id) (This)->lpVtbl->get_PlugAndPlayId(This,Id)
+#define IInkTablet_get_MaximumInputRectangle(This,Rectangle) (This)->lpVtbl->get_MaximumInputRectangle(This,Rectangle)
+#define IInkTablet_get_HardwareCapabilities(This,Capabilities) (This)->lpVtbl->get_HardwareCapabilities(This,Capabilities)
+#define IInkTablet_IsPacketPropertySupported(This,packetPropertyName,Supported) (This)->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported)
+#define IInkTablet_GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkTablet_QueryInterface(IInkTablet* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkTablet_AddRef(IInkTablet* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkTablet_Release(IInkTablet* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkTablet_GetTypeInfoCount(IInkTablet* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkTablet_GetTypeInfo(IInkTablet* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkTablet_GetIDsOfNames(IInkTablet* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkTablet_Invoke(IInkTablet* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkTablet methods ***/
+static FORCEINLINE HRESULT IInkTablet_get_Name(IInkTablet* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkTablet_get_PlugAndPlayId(IInkTablet* This,BSTR *Id) {
+    return This->lpVtbl->get_PlugAndPlayId(This,Id);
+}
+static FORCEINLINE HRESULT IInkTablet_get_MaximumInputRectangle(IInkTablet* This,IInkRectangle **Rectangle) {
+    return This->lpVtbl->get_MaximumInputRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkTablet_get_HardwareCapabilities(IInkTablet* This,TabletHardwareCapabilities *Capabilities) {
+    return This->lpVtbl->get_HardwareCapabilities(This,Capabilities);
+}
+static FORCEINLINE HRESULT IInkTablet_IsPacketPropertySupported(IInkTablet* This,BSTR packetPropertyName,VARIANT_BOOL *Supported) {
+    return This->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported);
+}
+static FORCEINLINE HRESULT IInkTablet_GetPropertyMetrics(IInkTablet* This,BSTR propertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,float *Resolution) {
+    return This->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkTablet_get_Name_Proxy(
+    IInkTablet* This,
+    BSTR *Name);
+void __RPC_STUB IInkTablet_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_PlugAndPlayId_Proxy(
+    IInkTablet* This,
+    BSTR *Id);
+void __RPC_STUB IInkTablet_get_PlugAndPlayId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_MaximumInputRectangle_Proxy(
+    IInkTablet* This,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkTablet_get_MaximumInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_HardwareCapabilities_Proxy(
+    IInkTablet* This,
+    TabletHardwareCapabilities *Capabilities);
+void __RPC_STUB IInkTablet_get_HardwareCapabilities_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_IsPacketPropertySupported_Proxy(
+    IInkTablet* This,
+    BSTR packetPropertyName,
+    VARIANT_BOOL *Supported);
+void __RPC_STUB IInkTablet_IsPacketPropertySupported_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_GetPropertyMetrics_Proxy(
+    IInkTablet* This,
+    BSTR propertyName,
+    LONG *Minimum,
+    LONG *Maximum,
+    TabletPropertyMetricUnit *Units,
+    float *Resolution);
+void __RPC_STUB IInkTablet_GetPropertyMetrics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkTablet_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursorButton interface
+ */
+#ifndef __IInkCursorButton_INTERFACE_DEFINED__
+#define __IInkCursorButton_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("85ef9417-1d59-49b2-a13c-702c85430894")
+IInkCursorButton : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Id(
+        BSTR *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_State(
+        InkCursorButtonState *CurrentState) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94)
+#endif
+#else
+typedef struct IInkCursorButtonVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursorButton* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursorButton* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursorButton* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursorButton* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursorButton* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursorButton* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursorButton* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursorButton methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkCursorButton* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IInkCursorButton* This,
+        BSTR *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_State)(
+        IInkCursorButton* This,
+        InkCursorButtonState *CurrentState);
+
+    END_INTERFACE
+} IInkCursorButtonVtbl;
+interface IInkCursorButton {
+    CONST_VTBL IInkCursorButtonVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursorButton_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursorButton_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursorButton_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursorButton_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursorButton_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursorButton_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursorButton_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursorButton methods ***/
+#define IInkCursorButton_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkCursorButton_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
+#define IInkCursorButton_get_State(This,CurrentState) (This)->lpVtbl->get_State(This,CurrentState)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_QueryInterface(IInkCursorButton* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursorButton_AddRef(IInkCursorButton* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursorButton_Release(IInkCursorButton* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfoCount(IInkCursorButton* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfo(IInkCursorButton* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursorButton_GetIDsOfNames(IInkCursorButton* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursorButton_Invoke(IInkCursorButton* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursorButton methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_get_Name(IInkCursorButton* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkCursorButton_get_Id(IInkCursorButton* This,BSTR *Id) {
+    return This->lpVtbl->get_Id(This,Id);
+}
+static FORCEINLINE HRESULT IInkCursorButton_get_State(IInkCursorButton* This,InkCursorButtonState *CurrentState) {
+    return This->lpVtbl->get_State(This,CurrentState);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_Name_Proxy(
+    IInkCursorButton* This,
+    BSTR *Name);
+void __RPC_STUB IInkCursorButton_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_Id_Proxy(
+    IInkCursorButton* This,
+    BSTR *Id);
+void __RPC_STUB IInkCursorButton_get_Id_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_State_Proxy(
+    IInkCursorButton* This,
+    InkCursorButtonState *CurrentState);
+void __RPC_STUB IInkCursorButton_get_State_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursorButton_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursorButtons interface
+ */
+#ifndef __IInkCursorButtons_INTERFACE_DEFINED__
+#define __IInkCursorButtons_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3671cc40-b624-4671-9fa0-db119d952d54")
+IInkCursorButtons : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkCursorButton **Button) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54)
+#endif
+#else
+typedef struct IInkCursorButtonsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursorButtons* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursorButtons* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursorButtons* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursorButtons* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursorButtons* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursorButtons* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursorButtons* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursorButtons methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCursorButtons* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCursorButtons* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCursorButtons* This,
+        VARIANT Identifier,
+        IInkCursorButton **Button);
+
+    END_INTERFACE
+} IInkCursorButtonsVtbl;
+interface IInkCursorButtons {
+    CONST_VTBL IInkCursorButtonsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursorButtons_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursorButtons_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursorButtons_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursorButtons_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursorButtons_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursorButtons_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursorButtons_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursorButtons methods ***/
+#define IInkCursorButtons_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCursorButtons_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCursorButtons_Item(This,Identifier,Button) (This)->lpVtbl->Item(This,Identifier,Button)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_QueryInterface(IInkCursorButtons* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursorButtons_AddRef(IInkCursorButtons* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursorButtons_Release(IInkCursorButtons* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfoCount(IInkCursorButtons* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfo(IInkCursorButtons* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_GetIDsOfNames(IInkCursorButtons* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_Invoke(IInkCursorButtons* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursorButtons methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_get_Count(IInkCursorButtons* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_get__NewEnum(IInkCursorButtons* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_Item(IInkCursorButtons* This,VARIANT Identifier,IInkCursorButton **Button) {
+    return This->lpVtbl->Item(This,Identifier,Button);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_get_Count_Proxy(
+    IInkCursorButtons* This,
+    LONG *Count);
+void __RPC_STUB IInkCursorButtons_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_get__NewEnum_Proxy(
+    IInkCursorButtons* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCursorButtons_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_Item_Proxy(
+    IInkCursorButtons* This,
+    VARIANT Identifier,
+    IInkCursorButton **Button);
+void __RPC_STUB IInkCursorButtons_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursorButtons_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursor interface
+ */
+#ifndef __IInkCursor_INTERFACE_DEFINED__
+#define __IInkCursor_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ad30c630-40c5-4350-8405-9c71012fc558")
+IInkCursor : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Id(
+        LONG *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Inverted(
+        VARIANT_BOOL *Status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
+        IInkDrawingAttributes **Attributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
+        IInkDrawingAttributes *Attributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
+        IInkTablet **Tablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Buttons(
+        IInkCursorButtons **Buttons) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58)
+#endif
+#else
+typedef struct IInkCursorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursor* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursor* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursor* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursor* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursor* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursor* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursor* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursor methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkCursor* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IInkCursor* This,
+        LONG *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Inverted)(
+        IInkCursor* This,
+        VARIANT_BOOL *Status);
+
+    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
+        IInkCursor* This,
+        IInkDrawingAttributes **Attributes);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
+        IInkCursor* This,
+        IInkDrawingAttributes *Attributes);
+
+    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
+        IInkCursor* This,
+        IInkTablet **Tablet);
+
+    HRESULT (STDMETHODCALLTYPE *get_Buttons)(
+        IInkCursor* This,
+        IInkCursorButtons **Buttons);
+
+    END_INTERFACE
+} IInkCursorVtbl;
+interface IInkCursor {
+    CONST_VTBL IInkCursorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursor_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursor_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursor_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursor_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursor_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursor_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursor methods ***/
+#define IInkCursor_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkCursor_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
+#define IInkCursor_get_Inverted(This,Status) (This)->lpVtbl->get_Inverted(This,Status)
+#define IInkCursor_get_DrawingAttributes(This,Attributes) (This)->lpVtbl->get_DrawingAttributes(This,Attributes)
+#define IInkCursor_putref_DrawingAttributes(This,Attributes) (This)->lpVtbl->putref_DrawingAttributes(This,Attributes)
+#define IInkCursor_get_Tablet(This,Tablet) (This)->lpVtbl->get_Tablet(This,Tablet)
+#define IInkCursor_get_Buttons(This,Buttons) (This)->lpVtbl->get_Buttons(This,Buttons)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursor_QueryInterface(IInkCursor* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursor_AddRef(IInkCursor* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursor_Release(IInkCursor* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursor_GetTypeInfoCount(IInkCursor* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursor_GetTypeInfo(IInkCursor* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursor_GetIDsOfNames(IInkCursor* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursor_Invoke(IInkCursor* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursor methods ***/
+static FORCEINLINE HRESULT IInkCursor_get_Name(IInkCursor* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Id(IInkCursor* This,LONG *Id) {
+    return This->lpVtbl->get_Id(This,Id);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Inverted(IInkCursor* This,VARIANT_BOOL *Status) {
+    return This->lpVtbl->get_Inverted(This,Status);
+}
+static FORCEINLINE HRESULT IInkCursor_get_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes **Attributes) {
+    return This->lpVtbl->get_DrawingAttributes(This,Attributes);
+}
+static FORCEINLINE HRESULT IInkCursor_putref_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes *Attributes) {
+    return This->lpVtbl->putref_DrawingAttributes(This,Attributes);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Tablet(IInkCursor* This,IInkTablet **Tablet) {
+    return This->lpVtbl->get_Tablet(This,Tablet);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Buttons(IInkCursor* This,IInkCursorButtons **Buttons) {
+    return This->lpVtbl->get_Buttons(This,Buttons);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Name_Proxy(
+    IInkCursor* This,
+    BSTR *Name);
+void __RPC_STUB IInkCursor_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Id_Proxy(
+    IInkCursor* This,
+    LONG *Id);
+void __RPC_STUB IInkCursor_get_Id_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Inverted_Proxy(
+    IInkCursor* This,
+    VARIANT_BOOL *Status);
+void __RPC_STUB IInkCursor_get_Inverted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_DrawingAttributes_Proxy(
+    IInkCursor* This,
+    IInkDrawingAttributes **Attributes);
+void __RPC_STUB IInkCursor_get_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_putref_DrawingAttributes_Proxy(
+    IInkCursor* This,
+    IInkDrawingAttributes *Attributes);
+void __RPC_STUB IInkCursor_putref_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Tablet_Proxy(
+    IInkCursor* This,
+    IInkTablet **Tablet);
+void __RPC_STUB IInkCursor_get_Tablet_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Buttons_Proxy(
+    IInkCursor* This,
+    IInkCursorButtons **Buttons);
+void __RPC_STUB IInkCursor_get_Buttons_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursor_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkTransform interface
+ */
+#ifndef __IInkTransform_INTERFACE_DEFINED__
+#define __IInkTransform_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("615f1d43-8703-4565-88e2-8201d2ecd7b7")
+IInkTransform : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Translate(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reflect(
+        VARIANT_BOOL Horizontally,
+        VARIANT_BOOL Vertically) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransform(
+        float *eM11,
+        float *eM12,
+        float *eM21,
+        float *eM22,
+        float *eDx,
+        float *eDy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTransform(
+        float eM11,
+        float eM12,
+        float eM21,
+        float eM22,
+        float eDx,
+        float eDy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM11(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM11(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM12(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM12(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM21(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM21(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM22(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM22(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eDx(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eDx(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eDy(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eDy(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        XFORM *XForm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        XFORM XForm) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7)
+#endif
+#else
+typedef struct IInkTransformVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkTransform* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkTransform* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkTransform* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkTransform* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkTransform* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkTransform* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkTransform* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkTransform methods ***/
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IInkTransform* This);
+
+    HRESULT (STDMETHODCALLTYPE *Translate)(
+        IInkTransform* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkTransform* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Reflect)(
+        IInkTransform* This,
+        VARIANT_BOOL Horizontally,
+        VARIANT_BOOL Vertically);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkTransform* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkTransform* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransform)(
+        IInkTransform* This,
+        float *eM11,
+        float *eM12,
+        float *eM21,
+        float *eM22,
+        float *eDx,
+        float *eDy);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransform)(
+        IInkTransform* This,
+        float eM11,
+        float eM12,
+        float eM21,
+        float eM22,
+        float eDx,
+        float eDy);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM11)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM11)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM12)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM12)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM21)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM21)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM22)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM22)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eDx)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eDx)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eDy)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eDy)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkTransform* This,
+        XFORM *XForm);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkTransform* This,
+        XFORM XForm);
+
+    END_INTERFACE
+} IInkTransformVtbl;
+interface IInkTransform {
+    CONST_VTBL IInkTransformVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkTransform_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkTransform_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkTransform_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkTransform_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkTransform_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkTransform methods ***/
+#define IInkTransform_Reset(This) (This)->lpVtbl->Reset(This)
+#define IInkTransform_Translate(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent)
+#define IInkTransform_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkTransform_Reflect(This,Horizontally,Vertically) (This)->lpVtbl->Reflect(This,Horizontally,Vertically)
+#define IInkTransform_Shear(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent)
+#define IInkTransform_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkTransform_GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
+#define IInkTransform_SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
+#define IInkTransform_get_eM11(This,Value) (This)->lpVtbl->get_eM11(This,Value)
+#define IInkTransform_put_eM11(This,Value) (This)->lpVtbl->put_eM11(This,Value)
+#define IInkTransform_get_eM12(This,Value) (This)->lpVtbl->get_eM12(This,Value)
+#define IInkTransform_put_eM12(This,Value) (This)->lpVtbl->put_eM12(This,Value)
+#define IInkTransform_get_eM21(This,Value) (This)->lpVtbl->get_eM21(This,Value)
+#define IInkTransform_put_eM21(This,Value) (This)->lpVtbl->put_eM21(This,Value)
+#define IInkTransform_get_eM22(This,Value) (This)->lpVtbl->get_eM22(This,Value)
+#define IInkTransform_put_eM22(This,Value) (This)->lpVtbl->put_eM22(This,Value)
+#define IInkTransform_get_eDx(This,Value) (This)->lpVtbl->get_eDx(This,Value)
+#define IInkTransform_put_eDx(This,Value) (This)->lpVtbl->put_eDx(This,Value)
+#define IInkTransform_get_eDy(This,Value) (This)->lpVtbl->get_eDy(This,Value)
+#define IInkTransform_put_eDy(This,Value) (This)->lpVtbl->put_eDy(This,Value)
+#define IInkTransform_get_Data(This,XForm) (This)->lpVtbl->get_Data(This,XForm)
+#define IInkTransform_put_Data(This,XForm) (This)->lpVtbl->put_Data(This,XForm)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkTransform_QueryInterface(IInkTransform* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkTransform_AddRef(IInkTransform* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkTransform_Release(IInkTransform* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkTransform_GetTypeInfoCount(IInkTransform* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkTransform_GetTypeInfo(IInkTransform* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkTransform_GetIDsOfNames(IInkTransform* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkTransform_Invoke(IInkTransform* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkTransform methods ***/
+static FORCEINLINE HRESULT IInkTransform_Reset(IInkTransform* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IInkTransform_Translate(IInkTransform* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkTransform_Rotate(IInkTransform* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkTransform_Reflect(IInkTransform* This,VARIANT_BOOL Horizontally,VARIANT_BOOL Vertically) {
+    return This->lpVtbl->Reflect(This,Horizontally,Vertically);
+}
+static FORCEINLINE HRESULT IInkTransform_Shear(IInkTransform* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkTransform_ScaleTransform(IInkTransform* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkTransform_GetTransform(IInkTransform* This,float *eM11,float *eM12,float *eM21,float *eM22,float *eDx,float *eDy) {
+    return This->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
+}
+static FORCEINLINE HRESULT IInkTransform_SetTransform(IInkTransform* This,float eM11,float eM12,float eM21,float eM22,float eDx,float eDy) {
+    return This->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM11(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM11(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM11(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM11(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM12(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM12(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM12(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM12(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM21(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM21(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM21(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM21(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM22(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM22(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM22(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM22(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eDx(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eDx(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eDx(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eDx(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eDy(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eDy(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eDy(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eDy(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_Data(IInkTransform* This,XFORM *XForm) {
+    return This->lpVtbl->get_Data(This,XForm);
+}
+static FORCEINLINE HRESULT IInkTransform_put_Data(IInkTransform* This,XFORM XForm) {
+    return This->lpVtbl->put_Data(This,XForm);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkTransform_Reset_Proxy(
+    IInkTransform* This);
+void __RPC_STUB IInkTransform_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Translate_Proxy(
+    IInkTransform* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkTransform_Translate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Rotate_Proxy(
+    IInkTransform* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkTransform_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Reflect_Proxy(
+    IInkTransform* This,
+    VARIANT_BOOL Horizontally,
+    VARIANT_BOOL Vertically);
+void __RPC_STUB IInkTransform_Reflect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Shear_Proxy(
+    IInkTransform* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkTransform_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_ScaleTransform_Proxy(
+    IInkTransform* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkTransform_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_GetTransform_Proxy(
+    IInkTransform* This,
+    float *eM11,
+    float *eM12,
+    float *eM21,
+    float *eM22,
+    float *eDx,
+    float *eDy);
+void __RPC_STUB IInkTransform_GetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_SetTransform_Proxy(
+    IInkTransform* This,
+    float eM11,
+    float eM12,
+    float eM21,
+    float eM22,
+    float eDx,
+    float eDy);
+void __RPC_STUB IInkTransform_SetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM11_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM11_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM11_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM11_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM12_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM12_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM12_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM12_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM21_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM21_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM21_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM21_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM22_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM22_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM22_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM22_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eDx_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eDx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eDx_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eDx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eDy_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eDy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eDy_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eDy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_Data_Proxy(
+    IInkTransform* This,
+    XFORM *XForm);
+void __RPC_STUB IInkTransform_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_Data_Proxy(
+    IInkTransform* This,
+    XFORM XForm);
+void __RPC_STUB IInkTransform_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkTransform_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionAlternates interface
+ */
+#ifndef __IInkRecognitionAlternates_INTERFACE_DEFINED__
+#define __IInkRecognitionAlternates_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("286a167f-9f19-4c61-9d53-4f07be622b84")
+IInkRecognitionAlternates : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkRecognitionAlternate **InkRecoAlternate) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84)
+#endif
+#else
+typedef struct IInkRecognitionAlternatesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionAlternates* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionAlternates* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionAlternates* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionAlternates* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionAlternates* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionAlternates* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionAlternates* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionAlternates methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkRecognitionAlternates* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkRecognitionAlternates* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionAlternates* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkRecognitionAlternates* This,
+        LONG Index,
+        IInkRecognitionAlternate **InkRecoAlternate);
+
+    END_INTERFACE
+} IInkRecognitionAlternatesVtbl;
+interface IInkRecognitionAlternates {
+    CONST_VTBL IInkRecognitionAlternatesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionAlternates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionAlternates_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionAlternates_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionAlternates_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionAlternates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionAlternates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionAlternates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionAlternates methods ***/
+#define IInkRecognitionAlternates_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkRecognitionAlternates_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkRecognitionAlternates_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionAlternates_Item(This,Index,InkRecoAlternate) (This)->lpVtbl->Item(This,Index,InkRecoAlternate)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_QueryInterface(IInkRecognitionAlternates* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternates_AddRef(IInkRecognitionAlternates* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternates_Release(IInkRecognitionAlternates* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfoCount(IInkRecognitionAlternates* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfo(IInkRecognitionAlternates* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetIDsOfNames(IInkRecognitionAlternates* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_Invoke(IInkRecognitionAlternates* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionAlternates methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Count(IInkRecognitionAlternates* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get__NewEnum(IInkRecognitionAlternates* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Strokes(IInkRecognitionAlternates* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_Item(IInkRecognitionAlternates* This,LONG Index,IInkRecognitionAlternate **InkRecoAlternate) {
+    return This->lpVtbl->Item(This,Index,InkRecoAlternate);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get_Count_Proxy(
+    IInkRecognitionAlternates* This,
+    LONG *Count);
+void __RPC_STUB IInkRecognitionAlternates_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get__NewEnum_Proxy(
+    IInkRecognitionAlternates* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkRecognitionAlternates_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get_Strokes_Proxy(
+    IInkRecognitionAlternates* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionAlternates_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_Item_Proxy(
+    IInkRecognitionAlternates* This,
+    LONG Index,
+    IInkRecognitionAlternate **InkRecoAlternate);
+void __RPC_STUB IInkRecognitionAlternates_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionAlternates_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionAlternate interface
+ */
+#ifndef __IInkRecognitionAlternate_INTERFACE_DEFINED__
+#define __IInkRecognitionAlternate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b7e660ad-77e4-429b-adda-873780d1fc4a")
+IInkRecognitionAlternate : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_String(
+        BSTR *RecoString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Confidence(
+        InkRecognitionConfidence *Confidence) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Baseline(
+        VARIANT *Baseline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Midline(
+        VARIANT *Midline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ascender(
+        VARIANT *Ascender) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Descender(
+        VARIANT *Descender) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LineNumber(
+        LONG *LineNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LineAlternates(
+        IInkRecognitionAlternates **LineAlternates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ConfidenceAlternates(
+        IInkRecognitionAlternates **ConfidenceAlternates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromStrokeRanges(
+        IInkStrokes *Strokes,
+        IInkStrokes **GetStrokesFromStrokeRanges) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromTextRange(
+        LONG *selectionStart,
+        LONG *selectionLength,
+        IInkStrokes **GetStrokesFromTextRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextRangeFromStrokes(
+        IInkStrokes *Strokes,
+        LONG *selectionStart,
+        LONG *selectionLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AlternatesWithConstantPropertyValues(
+        BSTR PropertyType,
+        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
+        BSTR PropertyType,
+        VARIANT *PropertyValue) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a)
+#endif
+#else
+typedef struct IInkRecognitionAlternateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionAlternate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionAlternate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionAlternate* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionAlternate* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionAlternate* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionAlternate* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionAlternate* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionAlternate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_String)(
+        IInkRecognitionAlternate* This,
+        BSTR *RecoString);
+
+    HRESULT (STDMETHODCALLTYPE *get_Confidence)(
+        IInkRecognitionAlternate* This,
+        InkRecognitionConfidence *Confidence);
+
+    HRESULT (STDMETHODCALLTYPE *get_Baseline)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Baseline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Midline)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Midline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ascender)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Ascender);
+
+    HRESULT (STDMETHODCALLTYPE *get_Descender)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Descender);
+
+    HRESULT (STDMETHODCALLTYPE *get_LineNumber)(
+        IInkRecognitionAlternate* This,
+        LONG *LineNumber);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *get_LineAlternates)(
+        IInkRecognitionAlternate* This,
+        IInkRecognitionAlternates **LineAlternates);
+
+    HRESULT (STDMETHODCALLTYPE *get_ConfidenceAlternates)(
+        IInkRecognitionAlternate* This,
+        IInkRecognitionAlternates **ConfidenceAlternates);
+
+    HRESULT (STDMETHODCALLTYPE *GetStrokesFromStrokeRanges)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes *Strokes,
+        IInkStrokes **GetStrokesFromStrokeRanges);
+
+    HRESULT (STDMETHODCALLTYPE *GetStrokesFromTextRange)(
+        IInkRecognitionAlternate* This,
+        LONG *selectionStart,
+        LONG *selectionLength,
+        IInkStrokes **GetStrokesFromTextRange);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextRangeFromStrokes)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes *Strokes,
+        LONG *selectionStart,
+        LONG *selectionLength);
+
+    HRESULT (STDMETHODCALLTYPE *AlternatesWithConstantPropertyValues)(
+        IInkRecognitionAlternate* This,
+        BSTR PropertyType,
+        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
+        IInkRecognitionAlternate* This,
+        BSTR PropertyType,
+        VARIANT *PropertyValue);
+
+    END_INTERFACE
+} IInkRecognitionAlternateVtbl;
+interface IInkRecognitionAlternate {
+    CONST_VTBL IInkRecognitionAlternateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionAlternate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionAlternate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionAlternate_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionAlternate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionAlternate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionAlternate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionAlternate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionAlternate methods ***/
+#define IInkRecognitionAlternate_get_String(This,RecoString) (This)->lpVtbl->get_String(This,RecoString)
+#define IInkRecognitionAlternate_get_Confidence(This,Confidence) (This)->lpVtbl->get_Confidence(This,Confidence)
+#define IInkRecognitionAlternate_get_Baseline(This,Baseline) (This)->lpVtbl->get_Baseline(This,Baseline)
+#define IInkRecognitionAlternate_get_Midline(This,Midline) (This)->lpVtbl->get_Midline(This,Midline)
+#define IInkRecognitionAlternate_get_Ascender(This,Ascender) (This)->lpVtbl->get_Ascender(This,Ascender)
+#define IInkRecognitionAlternate_get_Descender(This,Descender) (This)->lpVtbl->get_Descender(This,Descender)
+#define IInkRecognitionAlternate_get_LineNumber(This,LineNumber) (This)->lpVtbl->get_LineNumber(This,LineNumber)
+#define IInkRecognitionAlternate_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionAlternate_get_LineAlternates(This,LineAlternates) (This)->lpVtbl->get_LineAlternates(This,LineAlternates)
+#define IInkRecognitionAlternate_get_ConfidenceAlternates(This,ConfidenceAlternates) (This)->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates)
+#define IInkRecognitionAlternate_GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges) (This)->lpVtbl->GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges)
+#define IInkRecognitionAlternate_GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange) (This)->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange)
+#define IInkRecognitionAlternate_GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength) (This)->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength)
+#define IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues) (This)->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues)
+#define IInkRecognitionAlternate_GetPropertyValue(This,PropertyType,PropertyValue) (This)->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_QueryInterface(IInkRecognitionAlternate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternate_AddRef(IInkRecognitionAlternate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternate_Release(IInkRecognitionAlternate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfoCount(IInkRecognitionAlternate* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfo(IInkRecognitionAlternate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetIDsOfNames(IInkRecognitionAlternate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_Invoke(IInkRecognitionAlternate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionAlternate methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_String(IInkRecognitionAlternate* This,BSTR *RecoString) {
+    return This->lpVtbl->get_String(This,RecoString);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Confidence(IInkRecognitionAlternate* This,InkRecognitionConfidence *Confidence) {
+    return This->lpVtbl->get_Confidence(This,Confidence);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Baseline(IInkRecognitionAlternate* This,VARIANT *Baseline) {
+    return This->lpVtbl->get_Baseline(This,Baseline);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Midline(IInkRecognitionAlternate* This,VARIANT *Midline) {
+    return This->lpVtbl->get_Midline(This,Midline);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Ascender(IInkRecognitionAlternate* This,VARIANT *Ascender) {
+    return This->lpVtbl->get_Ascender(This,Ascender);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Descender(IInkRecognitionAlternate* This,VARIANT *Descender) {
+    return This->lpVtbl->get_Descender(This,Descender);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineNumber(IInkRecognitionAlternate* This,LONG *LineNumber) {
+    return This->lpVtbl->get_LineNumber(This,LineNumber);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Strokes(IInkRecognitionAlternate* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **LineAlternates) {
+    return This->lpVtbl->get_LineAlternates(This,LineAlternates);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_ConfidenceAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **ConfidenceAlternates) {
+    return This->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromStrokeRanges(IInkRecognitionAlternate* This,IInkStrokes *Strokes,IInkStrokes **GetStrokesFromStrokeRanges) {
+    return This->lpVtbl->GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromTextRange(IInkRecognitionAlternate* This,LONG *selectionStart,LONG *selectionLength,IInkStrokes **GetStrokesFromTextRange) {
+    return This->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTextRangeFromStrokes(IInkRecognitionAlternate* This,IInkStrokes *Strokes,LONG *selectionStart,LONG *selectionLength) {
+    return This->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(IInkRecognitionAlternate* This,BSTR PropertyType,IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) {
+    return This->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetPropertyValue(IInkRecognitionAlternate* This,BSTR PropertyType,VARIANT *PropertyValue) {
+    return This->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_String_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR *RecoString);
+void __RPC_STUB IInkRecognitionAlternate_get_String_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Confidence_Proxy(
+    IInkRecognitionAlternate* This,
+    InkRecognitionConfidence *Confidence);
+void __RPC_STUB IInkRecognitionAlternate_get_Confidence_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Baseline_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Baseline);
+void __RPC_STUB IInkRecognitionAlternate_get_Baseline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Midline_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Midline);
+void __RPC_STUB IInkRecognitionAlternate_get_Midline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Ascender_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Ascender);
+void __RPC_STUB IInkRecognitionAlternate_get_Ascender_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Descender_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Descender);
+void __RPC_STUB IInkRecognitionAlternate_get_Descender_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_LineNumber_Proxy(
+    IInkRecognitionAlternate* This,
+    LONG *LineNumber);
+void __RPC_STUB IInkRecognitionAlternate_get_LineNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Strokes_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionAlternate_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_LineAlternates_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkRecognitionAlternates **LineAlternates);
+void __RPC_STUB IInkRecognitionAlternate_get_LineAlternates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_ConfidenceAlternates_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkRecognitionAlternates **ConfidenceAlternates);
+void __RPC_STUB IInkRecognitionAlternate_get_ConfidenceAlternates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetStrokesFromStrokeRanges_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes *Strokes,
+    IInkStrokes **GetStrokesFromStrokeRanges);
+void __RPC_STUB IInkRecognitionAlternate_GetStrokesFromStrokeRanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetStrokesFromTextRange_Proxy(
+    IInkRecognitionAlternate* This,
+    LONG *selectionStart,
+    LONG *selectionLength,
+    IInkStrokes **GetStrokesFromTextRange);
+void __RPC_STUB IInkRecognitionAlternate_GetStrokesFromTextRange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetTextRangeFromStrokes_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes *Strokes,
+    LONG *selectionStart,
+    LONG *selectionLength);
+void __RPC_STUB IInkRecognitionAlternate_GetTextRangeFromStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_AlternatesWithConstantPropertyValues_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR PropertyType,
+    IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
+void __RPC_STUB IInkRecognitionAlternate_AlternatesWithConstantPropertyValues_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetPropertyValue_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR PropertyType,
+    VARIANT *PropertyValue);
+void __RPC_STUB IInkRecognitionAlternate_GetPropertyValue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionAlternate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionResult interface
+ */
+#ifndef __IInkRecognitionResult_INTERFACE_DEFINED__
+#define __IInkRecognitionResult_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3bc129a8-86cd-45ad-bde8-e0d32d61c16d")
+IInkRecognitionResult : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_TopString(
+        BSTR *TopString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopAlternate(
+        IInkRecognitionAlternate **TopAlternate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopConfidence(
+        InkRecognitionConfidence *TopConfidence) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AlternatesFromSelection(
+        LONG selectionStart,
+        LONG selectionLength,
+        LONG maximumAlternates,
+        IInkRecognitionAlternates **AlternatesFromSelection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyTopAlternate(
+        IInkRecognitionAlternate *Alternate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetResultOnStrokes(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d)
+#endif
+#else
+typedef struct IInkRecognitionResultVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionResult* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionResult* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionResult* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionResult* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionResult* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionResult* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionResult* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionResult methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TopString)(
+        IInkRecognitionResult* This,
+        BSTR *TopString);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopAlternate)(
+        IInkRecognitionResult* This,
+        IInkRecognitionAlternate **TopAlternate);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopConfidence)(
+        IInkRecognitionResult* This,
+        InkRecognitionConfidence *TopConfidence);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionResult* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *AlternatesFromSelection)(
+        IInkRecognitionResult* This,
+        LONG selectionStart,
+        LONG selectionLength,
+        LONG maximumAlternates,
+        IInkRecognitionAlternates **AlternatesFromSelection);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyTopAlternate)(
+        IInkRecognitionResult* This,
+        IInkRecognitionAlternate *Alternate);
+
+    HRESULT (STDMETHODCALLTYPE *SetResultOnStrokes)(
+        IInkRecognitionResult* This);
+
+    END_INTERFACE
+} IInkRecognitionResultVtbl;
+interface IInkRecognitionResult {
+    CONST_VTBL IInkRecognitionResultVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionResult_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionResult_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionResult_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionResult methods ***/
+#define IInkRecognitionResult_get_TopString(This,TopString) (This)->lpVtbl->get_TopString(This,TopString)
+#define IInkRecognitionResult_get_TopAlternate(This,TopAlternate) (This)->lpVtbl->get_TopAlternate(This,TopAlternate)
+#define IInkRecognitionResult_get_TopConfidence(This,TopConfidence) (This)->lpVtbl->get_TopConfidence(This,TopConfidence)
+#define IInkRecognitionResult_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionResult_AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection) (This)->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection)
+#define IInkRecognitionResult_ModifyTopAlternate(This,Alternate) (This)->lpVtbl->ModifyTopAlternate(This,Alternate)
+#define IInkRecognitionResult_SetResultOnStrokes(This) (This)->lpVtbl->SetResultOnStrokes(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_QueryInterface(IInkRecognitionResult* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionResult_AddRef(IInkRecognitionResult* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionResult_Release(IInkRecognitionResult* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfoCount(IInkRecognitionResult* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfo(IInkRecognitionResult* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_GetIDsOfNames(IInkRecognitionResult* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_Invoke(IInkRecognitionResult* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionResult methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopString(IInkRecognitionResult* This,BSTR *TopString) {
+    return This->lpVtbl->get_TopString(This,TopString);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate **TopAlternate) {
+    return This->lpVtbl->get_TopAlternate(This,TopAlternate);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopConfidence(IInkRecognitionResult* This,InkRecognitionConfidence *TopConfidence) {
+    return This->lpVtbl->get_TopConfidence(This,TopConfidence);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_Strokes(IInkRecognitionResult* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_AlternatesFromSelection(IInkRecognitionResult* This,LONG selectionStart,LONG selectionLength,LONG maximumAlternates,IInkRecognitionAlternates **AlternatesFromSelection) {
+    return This->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_ModifyTopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate *Alternate) {
+    return This->lpVtbl->ModifyTopAlternate(This,Alternate);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_SetResultOnStrokes(IInkRecognitionResult* This) {
+    return This->lpVtbl->SetResultOnStrokes(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopString_Proxy(
+    IInkRecognitionResult* This,
+    BSTR *TopString);
+void __RPC_STUB IInkRecognitionResult_get_TopString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopAlternate_Proxy(
+    IInkRecognitionResult* This,
+    IInkRecognitionAlternate **TopAlternate);
+void __RPC_STUB IInkRecognitionResult_get_TopAlternate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopConfidence_Proxy(
+    IInkRecognitionResult* This,
+    InkRecognitionConfidence *TopConfidence);
+void __RPC_STUB IInkRecognitionResult_get_TopConfidence_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_Strokes_Proxy(
+    IInkRecognitionResult* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionResult_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_AlternatesFromSelection_Proxy(
+    IInkRecognitionResult* This,
+    LONG selectionStart,
+    LONG selectionLength,
+    LONG maximumAlternates,
+    IInkRecognitionAlternates **AlternatesFromSelection);
+void __RPC_STUB IInkRecognitionResult_AlternatesFromSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_ModifyTopAlternate_Proxy(
+    IInkRecognitionResult* This,
+    IInkRecognitionAlternate *Alternate);
+void __RPC_STUB IInkRecognitionResult_ModifyTopAlternate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_SetResultOnStrokes_Proxy(
+    IInkRecognitionResult* This);
+void __RPC_STUB IInkRecognitionResult_SetResultOnStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionResult_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkStrokeDisp interface
+ */
+#ifndef __IInkStrokeDisp_INTERFACE_DEFINED__
+#define __IInkStrokeDisp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("43242fea-91d1-4a72-963e-fbb91829cfa2")
+IInkStrokeDisp : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ID(
+        LONG *ID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_BezierPoints(
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
+        IInkDrawingAttributes **DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
+        IInkDrawingAttributes *DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PolylineCusps(
+        VARIANT *Cusps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_BezierCusps(
+        VARIANT *Cusps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SelfIntersections(
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketCount(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketSize(
+        LONG *plSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketDescription(
+        VARIANT *PacketDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Deleted(
+        VARIANT_BOOL *Deleted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindIntersections(
+        IInkStrokes *Strokes,
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRectangleIntersections(
+        IInkRectangle *Rectangle,
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
+        LONG X,
+        LONG Y,
+        float Radius,
+        VARIANT_BOOL *Intersects) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
+        LONG X,
+        LONG Y,
+        float *Distance,
+        float *Point) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Split(
+        float SplitAt,
+        IInkStrokeDisp **NewStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketDescriptionPropertyMetrics(
+        BSTR PropertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPoints(
+        LONG Index,
+        LONG Count,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPoints(
+        VARIANT Points,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPointsSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketData(
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketValuesByProperty(
+        BSTR PropertyName,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketValues) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPacketValuesByProperty(
+        BSTR bstrPropertyName,
+        VARIANT PacketValues,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPacketsSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFlattenedBezierPoints(
+        LONG FittingError,
+        VARIANT *FlattenedBezierPoints) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Transform(
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2)
+#endif
+#else
+typedef struct IInkStrokeDispVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkStrokeDisp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkStrokeDisp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkStrokeDisp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkStrokeDisp* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkStrokeDisp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkStrokeDisp* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkStrokeDisp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkStrokeDisp methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ID)(
+        IInkStrokeDisp* This,
+        LONG *ID);
+
+    HRESULT (STDMETHODCALLTYPE *get_BezierPoints)(
+        IInkStrokeDisp* This,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
+        IInkStrokeDisp* This,
+        IInkDrawingAttributes **DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
+        IInkStrokeDisp* This,
+        IInkDrawingAttributes *DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkStrokeDisp* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkStrokeDisp* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *get_PolylineCusps)(
+        IInkStrokeDisp* This,
+        VARIANT *Cusps);
+
+    HRESULT (STDMETHODCALLTYPE *get_BezierCusps)(
+        IInkStrokeDisp* This,
+        VARIANT *Cusps);
+
+    HRESULT (STDMETHODCALLTYPE *get_SelfIntersections)(
+        IInkStrokeDisp* This,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketCount)(
+        IInkStrokeDisp* This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketSize)(
+        IInkStrokeDisp* This,
+        LONG *plSize);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketDescription)(
+        IInkStrokeDisp* This,
+        VARIANT *PacketDescription);
+
+    HRESULT (STDMETHODCALLTYPE *get_Deleted)(
+        IInkStrokeDisp* This,
+        VARIANT_BOOL *Deleted);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkStrokeDisp* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *FindIntersections)(
+        IInkStrokeDisp* This,
+        IInkStrokes *Strokes,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *GetRectangleIntersections)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
+        IInkStrokeDisp* This,
+        LONG X,
+        LONG Y,
+        float Radius,
+        VARIANT_BOOL *Intersects);
+
+    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
+        IInkStrokeDisp* This,
+        LONG X,
+        LONG Y,
+        float *Distance,
+        float *Point);
+
+    HRESULT (STDMETHODCALLTYPE *Split)(
+        IInkStrokeDisp* This,
+        float SplitAt,
+        IInkStrokeDisp **NewStroke);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketDescriptionPropertyMetrics)(
+        IInkStrokeDisp* This,
+        BSTR PropertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution);
+
+    HRESULT (STDMETHODCALLTYPE *GetPoints)(
+        IInkStrokeDisp* This,
+        LONG Index,
+        LONG Count,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *SetPoints)(
+        IInkStrokeDisp* This,
+        VARIANT Points,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPointsSet);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketData)(
+        IInkStrokeDisp* This,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketData);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketValuesByProperty)(
+        IInkStrokeDisp* This,
+        BSTR PropertyName,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketValues);
+
+    HRESULT (STDMETHODCALLTYPE *SetPacketValuesByProperty)(
+        IInkStrokeDisp* This,
+        BSTR bstrPropertyName,
+        VARIANT PacketValues,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPacketsSet);
+
+    HRESULT (STDMETHODCALLTYPE *GetFlattenedBezierPoints)(
+        IInkStrokeDisp* This,
+        LONG FittingError,
+        VARIANT *FlattenedBezierPoints);
+
+    HRESULT (STDMETHODCALLTYPE *Transform)(
+        IInkStrokeDisp* This,
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkStrokeDisp* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkStrokeDisp* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkStrokeDisp* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkStrokeDisp* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    END_INTERFACE
+} IInkStrokeDispVtbl;
+interface IInkStrokeDisp {
+    CONST_VTBL IInkStrokeDispVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkStrokeDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkStrokeDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkStrokeDisp_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkStrokeDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkStrokeDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkStrokeDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkStrokeDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkStrokeDisp methods ***/
+#define IInkStrokeDisp_get_ID(This,ID) (This)->lpVtbl->get_ID(This,ID)
+#define IInkStrokeDisp_get_BezierPoints(This,Points) (This)->lpVtbl->get_BezierPoints(This,Points)
+#define IInkStrokeDisp_get_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->get_DrawingAttributes(This,DrawAttrs)
+#define IInkStrokeDisp_putref_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->putref_DrawingAttributes(This,DrawAttrs)
+#define IInkStrokeDisp_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkStrokeDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkStrokeDisp_get_PolylineCusps(This,Cusps) (This)->lpVtbl->get_PolylineCusps(This,Cusps)
+#define IInkStrokeDisp_get_BezierCusps(This,Cusps) (This)->lpVtbl->get_BezierCusps(This,Cusps)
+#define IInkStrokeDisp_get_SelfIntersections(This,Intersections) (This)->lpVtbl->get_SelfIntersections(This,Intersections)
+#define IInkStrokeDisp_get_PacketCount(This,plCount) (This)->lpVtbl->get_PacketCount(This,plCount)
+#define IInkStrokeDisp_get_PacketSize(This,plSize) (This)->lpVtbl->get_PacketSize(This,plSize)
+#define IInkStrokeDisp_get_PacketDescription(This,PacketDescription) (This)->lpVtbl->get_PacketDescription(This,PacketDescription)
+#define IInkStrokeDisp_get_Deleted(This,Deleted) (This)->lpVtbl->get_Deleted(This,Deleted)
+#define IInkStrokeDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
+#define IInkStrokeDisp_FindIntersections(This,Strokes,Intersections) (This)->lpVtbl->FindIntersections(This,Strokes,Intersections)
+#define IInkStrokeDisp_GetRectangleIntersections(This,Rectangle,Intersections) (This)->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections)
+#define IInkStrokeDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkStrokeDisp_HitTestCircle(This,X,Y,Radius,Intersects) (This)->lpVtbl->HitTestCircle(This,X,Y,Radius,Intersects)
+#define IInkStrokeDisp_NearestPoint(This,X,Y,Distance,Point) (This)->lpVtbl->NearestPoint(This,X,Y,Distance,Point)
+#define IInkStrokeDisp_Split(This,SplitAt,NewStroke) (This)->lpVtbl->Split(This,SplitAt,NewStroke)
+#define IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution)
+#define IInkStrokeDisp_GetPoints(This,Index,Count,Points) (This)->lpVtbl->GetPoints(This,Index,Count,Points)
+#define IInkStrokeDisp_SetPoints(This,Points,Index,Count,NumberOfPointsSet) (This)->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet)
+#define IInkStrokeDisp_GetPacketData(This,Index,Count,PacketData) (This)->lpVtbl->GetPacketData(This,Index,Count,PacketData)
+#define IInkStrokeDisp_GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues) (This)->lpVtbl->GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues)
+#define IInkStrokeDisp_SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet) (This)->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet)
+#define IInkStrokeDisp_GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints) (This)->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints)
+#define IInkStrokeDisp_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
+#define IInkStrokeDisp_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
+#define IInkStrokeDisp_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkStrokeDisp_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkStrokeDisp_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokeDisp_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_QueryInterface(IInkStrokeDisp* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkStrokeDisp_AddRef(IInkStrokeDisp* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkStrokeDisp_Release(IInkStrokeDisp* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfoCount(IInkStrokeDisp* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfo(IInkStrokeDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetIDsOfNames(IInkStrokeDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Invoke(IInkStrokeDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkStrokeDisp methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_get_ID(IInkStrokeDisp* This,LONG *ID) {
+    return This->lpVtbl->get_ID(This,ID);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierPoints(IInkStrokeDisp* This,VARIANT *Points) {
+    return This->lpVtbl->get_BezierPoints(This,Points);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes **DrawAttrs) {
+    return This->lpVtbl->get_DrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_putref_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes *DrawAttrs) {
+    return This->lpVtbl->putref_DrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_Ink(IInkStrokeDisp* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_ExtendedProperties(IInkStrokeDisp* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PolylineCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
+    return This->lpVtbl->get_PolylineCusps(This,Cusps);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
+    return This->lpVtbl->get_BezierCusps(This,Cusps);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_SelfIntersections(IInkStrokeDisp* This,VARIANT *Intersections) {
+    return This->lpVtbl->get_SelfIntersections(This,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketCount(IInkStrokeDisp* This,LONG *plCount) {
+    return This->lpVtbl->get_PacketCount(This,plCount);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketSize(IInkStrokeDisp* This,LONG *plSize) {
+    return This->lpVtbl->get_PacketSize(This,plSize);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketDescription(IInkStrokeDisp* This,VARIANT *PacketDescription) {
+    return This->lpVtbl->get_PacketDescription(This,PacketDescription);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_Deleted(IInkStrokeDisp* This,VARIANT_BOOL *Deleted) {
+    return This->lpVtbl->get_Deleted(This,Deleted);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetBoundingBox(IInkStrokeDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_FindIntersections(IInkStrokeDisp* This,IInkStrokes *Strokes,VARIANT *Intersections) {
+    return This->lpVtbl->FindIntersections(This,Strokes,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetRectangleIntersections(IInkStrokeDisp* This,IInkRectangle *Rectangle,VARIANT *Intersections) {
+    return This->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Clip(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_HitTestCircle(IInkStrokeDisp* This,LONG X,LONG Y,float Radius,VARIANT_BOOL *Intersects) {
+    return This->lpVtbl->HitTestCircle(This,X,Y,Radius,Intersects);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_NearestPoint(IInkStrokeDisp* This,LONG X,LONG Y,float *Distance,float *Point) {
+    return This->lpVtbl->NearestPoint(This,X,Y,Distance,Point);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Split(IInkStrokeDisp* This,float SplitAt,IInkStrokeDisp **NewStroke) {
+    return This->lpVtbl->Split(This,SplitAt,NewStroke);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(IInkStrokeDisp* This,BSTR PropertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,float *Resolution) {
+    return This->lpVtbl->GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPoints(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *Points) {
+    return This->lpVtbl->GetPoints(This,Index,Count,Points);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_SetPoints(IInkStrokeDisp* This,VARIANT Points,LONG Index,LONG Count,LONG *NumberOfPointsSet) {
+    return This->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketData(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *PacketData) {
+    return This->lpVtbl->GetPacketData(This,Index,Count,PacketData);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketValuesByProperty(IInkStrokeDisp* This,BSTR PropertyName,LONG Index,LONG Count,VARIANT *PacketValues) {
+    return This->lpVtbl->GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_SetPacketValuesByProperty(IInkStrokeDisp* This,BSTR bstrPropertyName,VARIANT PacketValues,LONG Index,LONG Count,LONG *NumberOfPacketsSet) {
+    return This->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetFlattenedBezierPoints(IInkStrokeDisp* This,LONG FittingError,VARIANT *FlattenedBezierPoints) {
+    return This->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Transform(IInkStrokeDisp* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_ScaleToRectangle(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Move(IInkStrokeDisp* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Rotate(IInkStrokeDisp* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Shear(IInkStrokeDisp* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_ScaleTransform(IInkStrokeDisp* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_ID_Proxy(
+    IInkStrokeDisp* This,
+    LONG *ID);
+void __RPC_STUB IInkStrokeDisp_get_ID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_BezierPoints_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Points);
+void __RPC_STUB IInkStrokeDisp_get_BezierPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_DrawingAttributes_Proxy(
+    IInkStrokeDisp* This,
+    IInkDrawingAttributes **DrawAttrs);
+void __RPC_STUB IInkStrokeDisp_get_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_putref_DrawingAttributes_Proxy(
+    IInkStrokeDisp* This,
+    IInkDrawingAttributes *DrawAttrs);
+void __RPC_STUB IInkStrokeDisp_putref_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_Ink_Proxy(
+    IInkStrokeDisp* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkStrokeDisp_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_ExtendedProperties_Proxy(
+    IInkStrokeDisp* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkStrokeDisp_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PolylineCusps_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Cusps);
+void __RPC_STUB IInkStrokeDisp_get_PolylineCusps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_BezierCusps_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Cusps);
+void __RPC_STUB IInkStrokeDisp_get_BezierCusps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_SelfIntersections_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_get_SelfIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketCount_Proxy(
+    IInkStrokeDisp* This,
+    LONG *plCount);
+void __RPC_STUB IInkStrokeDisp_get_PacketCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketSize_Proxy(
+    IInkStrokeDisp* This,
+    LONG *plSize);
+void __RPC_STUB IInkStrokeDisp_get_PacketSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketDescription_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *PacketDescription);
+void __RPC_STUB IInkStrokeDisp_get_PacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_Deleted_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT_BOOL *Deleted);
+void __RPC_STUB IInkStrokeDisp_get_Deleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetBoundingBox_Proxy(
+    IInkStrokeDisp* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkStrokeDisp_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_FindIntersections_Proxy(
+    IInkStrokeDisp* This,
+    IInkStrokes *Strokes,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_FindIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetRectangleIntersections_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_GetRectangleIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Clip_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokeDisp_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_HitTestCircle_Proxy(
+    IInkStrokeDisp* This,
+    LONG X,
+    LONG Y,
+    float Radius,
+    VARIANT_BOOL *Intersects);
+void __RPC_STUB IInkStrokeDisp_HitTestCircle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_NearestPoint_Proxy(
+    IInkStrokeDisp* This,
+    LONG X,
+    LONG Y,
+    float *Distance,
+    float *Point);
+void __RPC_STUB IInkStrokeDisp_NearestPoint_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Split_Proxy(
+    IInkStrokeDisp* This,
+    float SplitAt,
+    IInkStrokeDisp **NewStroke);
+void __RPC_STUB IInkStrokeDisp_Split_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketDescriptionPropertyMetrics_Proxy(
+    IInkStrokeDisp* This,
+    BSTR PropertyName,
+    LONG *Minimum,
+    LONG *Maximum,
+    TabletPropertyMetricUnit *Units,
+    float *Resolution);
+void __RPC_STUB IInkStrokeDisp_GetPacketDescriptionPropertyMetrics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPoints_Proxy(
+    IInkStrokeDisp* This,
+    LONG Index,
+    LONG Count,
+    VARIANT *Points);
+void __RPC_STUB IInkStrokeDisp_GetPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_SetPoints_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT Points,
+    LONG Index,
+    LONG Count,
+    LONG *NumberOfPointsSet);
+void __RPC_STUB IInkStrokeDisp_SetPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketData_Proxy(
+    IInkStrokeDisp* This,
+    LONG Index,
+    LONG Count,
+    VARIANT *PacketData);
+void __RPC_STUB IInkStrokeDisp_GetPacketData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketValuesByProperty_Proxy(
+    IInkStrokeDisp* This,
+    BSTR PropertyName,
+    LONG Index,
+    LONG Count,
+    VARIANT *PacketValues);
+void __RPC_STUB IInkStrokeDisp_GetPacketValuesByProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_SetPacketValuesByProperty_Proxy(
+    IInkStrokeDisp* This,
+    BSTR bstrPropertyName,
+    VARIANT PacketValues,
+    LONG Index,
+    LONG Count,
+    LONG *NumberOfPacketsSet);
+void __RPC_STUB IInkStrokeDisp_SetPacketValuesByProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetFlattenedBezierPoints_Proxy(
+    IInkStrokeDisp* This,
+    LONG FittingError,
+    VARIANT *FlattenedBezierPoints);
+void __RPC_STUB IInkStrokeDisp_GetFlattenedBezierPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Transform_Proxy(
+    IInkStrokeDisp* This,
+    IInkTransform *Transform,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkStrokeDisp_Transform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_ScaleToRectangle_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokeDisp_ScaleToRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Move_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkStrokeDisp_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Rotate_Proxy(
+    IInkStrokeDisp* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkStrokeDisp_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Shear_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokeDisp_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_ScaleTransform_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokeDisp_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkStrokeDisp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCustomStrokes interface
+ */
+#ifndef __IInkCustomStrokes_INTERFACE_DEFINED__
+#define __IInkCustomStrokes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7e23a88f-c30e-420f-9bdb-28902543f0c1")
+IInkCustomStrokes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        BSTR Name,
+        IInkStrokes *Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1)
+#endif
+#else
+typedef struct IInkCustomStrokesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCustomStrokes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCustomStrokes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCustomStrokes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCustomStrokes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCustomStrokes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCustomStrokes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCustomStrokes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCustomStrokes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCustomStrokes* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCustomStrokes* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCustomStrokes* This,
+        VARIANT Identifier,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkCustomStrokes* This,
+        BSTR Name,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkCustomStrokes* This,
+        VARIANT Identifier);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IInkCustomStrokes* This);
+
+    END_INTERFACE
+} IInkCustomStrokesVtbl;
+interface IInkCustomStrokes {
+    CONST_VTBL IInkCustomStrokesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCustomStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCustomStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCustomStrokes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCustomStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCustomStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCustomStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCustomStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCustomStrokes methods ***/
+#define IInkCustomStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCustomStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCustomStrokes_Item(This,Identifier,Strokes) (This)->lpVtbl->Item(This,Identifier,Strokes)
+#define IInkCustomStrokes_Add(This,Name,Strokes) (This)->lpVtbl->Add(This,Name,Strokes)
+#define IInkCustomStrokes_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
+#define IInkCustomStrokes_Clear(This) (This)->lpVtbl->Clear(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_QueryInterface(IInkCustomStrokes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCustomStrokes_AddRef(IInkCustomStrokes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCustomStrokes_Release(IInkCustomStrokes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfoCount(IInkCustomStrokes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfo(IInkCustomStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_GetIDsOfNames(IInkCustomStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Invoke(IInkCustomStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCustomStrokes methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_get_Count(IInkCustomStrokes* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_get__NewEnum(IInkCustomStrokes* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Item(IInkCustomStrokes* This,VARIANT Identifier,IInkStrokes **Strokes) {
+    return This->lpVtbl->Item(This,Identifier,Strokes);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Add(IInkCustomStrokes* This,BSTR Name,IInkStrokes *Strokes) {
+    return This->lpVtbl->Add(This,Name,Strokes);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Remove(IInkCustomStrokes* This,VARIANT Identifier) {
+    return This->lpVtbl->Remove(This,Identifier);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Clear(IInkCustomStrokes* This) {
+    return This->lpVtbl->Clear(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_get_Count_Proxy(
+    IInkCustomStrokes* This,
+    LONG *Count);
+void __RPC_STUB IInkCustomStrokes_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_get__NewEnum_Proxy(
+    IInkCustomStrokes* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCustomStrokes_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Item_Proxy(
+    IInkCustomStrokes* This,
+    VARIANT Identifier,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkCustomStrokes_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Add_Proxy(
+    IInkCustomStrokes* This,
+    BSTR Name,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkCustomStrokes_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Remove_Proxy(
+    IInkCustomStrokes* This,
+    VARIANT Identifier);
+void __RPC_STUB IInkCustomStrokes_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Clear_Proxy(
+    IInkCustomStrokes* This);
+void __RPC_STUB IInkCustomStrokes_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCustomStrokes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkDisp interface
+ */
+#ifndef __IInkDisp_INTERFACE_DEFINED__
+#define __IInkDisp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9d398fa0-c4e2-4fcd-9973-975caaf47ea6")
+IInkDisp : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Dirty(
+        VARIANT_BOOL *Dirty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Dirty(
+        VARIANT_BOOL Dirty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CustomStrokes(
+        IInkCustomStrokes **ppunkInkCustomStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteStrokes(
+        IInkStrokes *Strokes = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteStroke(
+        IInkStrokeDisp *Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExtractStrokes(
+        IInkStrokes *Strokes,
+        InkExtractFlags ExtractFlags,
+        IInkDisp **ExtractedInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExtractWithRectangle(
+        IInkRectangle *Rectangle,
+        InkExtractFlags extractFlags,
+        IInkDisp **ExtractedInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IInkDisp **NewInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
+        LONG X,
+        LONG Y,
+        float radius,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestWithRectangle(
+        IInkRectangle *SelectionRectangle,
+        float IntersectPercent,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestWithLasso(
+        VARIANT Points,
+        float IntersectPercent,
+        VARIANT *LassoPoints,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
+        LONG X,
+        LONG Y,
+        float *PointOnStroke,
+        float *DistanceFromPacket,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStrokes(
+        VARIANT StrokeIds,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddStrokesAtRectangle(
+        IInkStrokes *SourceStrokes,
+        IInkRectangle *TargetRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        InkPersistenceFormat PersistenceFormat,
+        InkPersistenceCompressionMode CompressionMode,
+        VARIANT *Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        VARIANT Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStroke(
+        VARIANT PacketData,
+        VARIANT PacketDescription,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardCopyWithRectangle(
+        IInkRectangle *Rectangle,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardCopy(
+        IInkStrokes *strokes,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CanPaste(
+        IDataObject *DataObject,
+        VARIANT_BOOL *CanPaste) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardPaste(
+        LONG x,
+        LONG y,
+        IDataObject *DataObject,
+        IInkStrokes **Strokes) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6)
+#endif
+#else
+typedef struct IInkDispVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkDisp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkDisp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkDisp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkDisp* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkDisp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkDisp* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkDisp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkDisp methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkDisp* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkDisp* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *get_Dirty)(
+        IInkDisp* This,
+        VARIANT_BOOL *Dirty);
+
+    HRESULT (STDMETHODCALLTYPE *put_Dirty)(
+        IInkDisp* This,
+        VARIANT_BOOL Dirty);
+
+    HRESULT (STDMETHODCALLTYPE *get_CustomStrokes)(
+        IInkDisp* This,
+        IInkCustomStrokes **ppunkInkCustomStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkDisp* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteStrokes)(
+        IInkDisp* This,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteStroke)(
+        IInkDisp* This,
+        IInkStrokeDisp *Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *ExtractStrokes)(
+        IInkDisp* This,
+        IInkStrokes *Strokes,
+        InkExtractFlags ExtractFlags,
+        IInkDisp **ExtractedInk);
+
+    HRESULT (STDMETHODCALLTYPE *ExtractWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle,
+        InkExtractFlags extractFlags,
+        IInkDisp **ExtractedInk);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IInkDisp* This,
+        IInkDisp **NewInk);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
+        IInkDisp* This,
+        LONG X,
+        LONG Y,
+        float radius,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *SelectionRectangle,
+        float IntersectPercent,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestWithLasso)(
+        IInkDisp* This,
+        VARIANT Points,
+        float IntersectPercent,
+        VARIANT *LassoPoints,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
+        IInkDisp* This,
+        LONG X,
+        LONG Y,
+        float *PointOnStroke,
+        float *DistanceFromPacket,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStrokes)(
+        IInkDisp* This,
+        VARIANT StrokeIds,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *AddStrokesAtRectangle)(
+        IInkDisp* This,
+        IInkStrokes *SourceStrokes,
+        IInkRectangle *TargetRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IInkDisp* This,
+        InkPersistenceFormat PersistenceFormat,
+        InkPersistenceCompressionMode CompressionMode,
+        VARIANT *Data);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IInkDisp* This,
+        VARIANT Data);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStroke)(
+        IInkDisp* This,
+        VARIANT PacketData,
+        VARIANT PacketDescription,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardCopyWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardCopy)(
+        IInkDisp* This,
+        IInkStrokes *strokes,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject);
+
+    HRESULT (STDMETHODCALLTYPE *CanPaste)(
+        IInkDisp* This,
+        IDataObject *DataObject,
+        VARIANT_BOOL *CanPaste);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardPaste)(
+        IInkDisp* This,
+        LONG x,
+        LONG y,
+        IDataObject *DataObject,
+        IInkStrokes **Strokes);
+
+    END_INTERFACE
+} IInkDispVtbl;
+interface IInkDisp {
+    CONST_VTBL IInkDispVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkDisp_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkDisp methods ***/
+#define IInkDisp_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkDisp_get_Dirty(This,Dirty) (This)->lpVtbl->get_Dirty(This,Dirty)
+#define IInkDisp_put_Dirty(This,Dirty) (This)->lpVtbl->put_Dirty(This,Dirty)
+#define IInkDisp_get_CustomStrokes(This,ppunkInkCustomStrokes) (This)->lpVtbl->get_CustomStrokes(This,ppunkInkCustomStrokes)
+#define IInkDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
+#define IInkDisp_DeleteStrokes(This,Strokes) (This)->lpVtbl->DeleteStrokes(This,Strokes)
+#define IInkDisp_DeleteStroke(This,Stroke) (This)->lpVtbl->DeleteStroke(This,Stroke)
+#define IInkDisp_ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk) (This)->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk)
+#define IInkDisp_ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk) (This)->lpVtbl->ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk)
+#define IInkDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkDisp_Clone(This,NewInk) (This)->lpVtbl->Clone(This,NewInk)
+#define IInkDisp_HitTestCircle(This,X,Y,radius,Strokes) (This)->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes)
+#define IInkDisp_HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes) (This)->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes)
+#define IInkDisp_HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes) (This)->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes)
+#define IInkDisp_NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke) (This)->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke)
+#define IInkDisp_CreateStrokes(This,StrokeIds,Strokes) (This)->lpVtbl->CreateStrokes(This,StrokeIds,Strokes)
+#define IInkDisp_AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle) (This)->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle)
+#define IInkDisp_Save(This,PersistenceFormat,CompressionMode,Data) (This)->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data)
+#define IInkDisp_Load(This,Data) (This)->lpVtbl->Load(This,Data)
+#define IInkDisp_CreateStroke(This,PacketData,PacketDescription,Stroke) (This)->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke)
+#define IInkDisp_ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject)
+#define IInkDisp_ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject)
+#define IInkDisp_CanPaste(This,DataObject,CanPaste) (This)->lpVtbl->CanPaste(This,DataObject,CanPaste)
+#define IInkDisp_ClipboardPaste(This,x,y,DataObject,Strokes) (This)->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkDisp_QueryInterface(IInkDisp* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkDisp_AddRef(IInkDisp* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkDisp_Release(IInkDisp* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkDisp_GetTypeInfoCount(IInkDisp* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkDisp_GetTypeInfo(IInkDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkDisp_GetIDsOfNames(IInkDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkDisp_Invoke(IInkDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkDisp methods ***/
+static FORCEINLINE HRESULT IInkDisp_get_Strokes(IInkDisp* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_get_ExtendedProperties(IInkDisp* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkDisp_get_Dirty(IInkDisp* This,VARIANT_BOOL *Dirty) {
+    return This->lpVtbl->get_Dirty(This,Dirty);
+}
+static FORCEINLINE HRESULT IInkDisp_put_Dirty(IInkDisp* This,VARIANT_BOOL Dirty) {
+    return This->lpVtbl->put_Dirty(This,Dirty);
+}
+static FORCEINLINE HRESULT IInkDisp_get_CustomStrokes(IInkDisp* This,IInkCustomStrokes **ppunkInkCustomStrokes) {
+    return This->lpVtbl->get_CustomStrokes(This,ppunkInkCustomStrokes);
+}
+static FORCEINLINE HRESULT IInkDisp_GetBoundingBox(IInkDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_DeleteStrokes(IInkDisp* This,IInkStrokes *Strokes) {
+    return This->lpVtbl->DeleteStrokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_DeleteStroke(IInkDisp* This,IInkStrokeDisp *Stroke) {
+    return This->lpVtbl->DeleteStroke(This,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_ExtractStrokes(IInkDisp* This,IInkStrokes *Strokes,InkExtractFlags ExtractFlags,IInkDisp **ExtractedInk) {
+    return This->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk);
+}
+static FORCEINLINE HRESULT IInkDisp_ExtractWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkExtractFlags extractFlags,IInkDisp **ExtractedInk) {
+    return This->lpVtbl->ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk);
+}
+static FORCEINLINE HRESULT IInkDisp_Clip(IInkDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_Clone(IInkDisp* This,IInkDisp **NewInk) {
+    return This->lpVtbl->Clone(This,NewInk);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestCircle(IInkDisp* This,LONG X,LONG Y,float radius,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestWithRectangle(IInkDisp* This,IInkRectangle *SelectionRectangle,float IntersectPercent,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestWithLasso(IInkDisp* This,VARIANT Points,float IntersectPercent,VARIANT *LassoPoints,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_NearestPoint(IInkDisp* This,LONG X,LONG Y,float *PointOnStroke,float *DistanceFromPacket,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_CreateStrokes(IInkDisp* This,VARIANT StrokeIds,IInkStrokes **Strokes) {
+    return This->lpVtbl->CreateStrokes(This,StrokeIds,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_AddStrokesAtRectangle(IInkDisp* This,IInkStrokes *SourceStrokes,IInkRectangle *TargetRectangle) {
+    return This->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_Save(IInkDisp* This,InkPersistenceFormat PersistenceFormat,InkPersistenceCompressionMode CompressionMode,VARIANT *Data) {
+    return This->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data);
+}
+static FORCEINLINE HRESULT IInkDisp_Load(IInkDisp* This,VARIANT Data) {
+    return This->lpVtbl->Load(This,Data);
+}
+static FORCEINLINE HRESULT IInkDisp_CreateStroke(IInkDisp* This,VARIANT PacketData,VARIANT PacketDescription,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardCopyWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
+    return This->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardCopy(IInkDisp* This,IInkStrokes *strokes,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
+    return This->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject);
+}
+static FORCEINLINE HRESULT IInkDisp_CanPaste(IInkDisp* This,IDataObject *DataObject,VARIANT_BOOL *CanPaste) {
+    return This->lpVtbl->CanPaste(This,DataObject,CanPaste);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardPaste(IInkDisp* This,LONG x,LONG y,IDataObject *DataObject,IInkStrokes **Strokes) {
+    return This->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkDisp_get_Strokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_ExtendedProperties_Proxy(
+    IInkDisp* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkDisp_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_Dirty_Proxy(
+    IInkDisp* This,
+    VARIANT_BOOL *Dirty);
+void __RPC_STUB IInkDisp_get_Dirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_put_Dirty_Proxy(
+    IInkDisp* This,
+    VARIANT_BOOL Dirty);
+void __RPC_STUB IInkDisp_put_Dirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_CustomStrokes_Proxy(
+    IInkDisp* This,
+    IInkCustomStrokes **ppunkInkCustomStrokes);
+void __RPC_STUB IInkDisp_get_CustomStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_GetBoundingBox_Proxy(
+    IInkDisp* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkDisp_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_DeleteStrokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkDisp_DeleteStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_DeleteStroke_Proxy(
+    IInkDisp* This,
+    IInkStrokeDisp *Stroke);
+void __RPC_STUB IInkDisp_DeleteStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ExtractStrokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes *Strokes,
+    InkExtractFlags ExtractFlags,
+    IInkDisp **ExtractedInk);
+void __RPC_STUB IInkDisp_ExtractStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ExtractWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle,
+    InkExtractFlags extractFlags,
+    IInkDisp **ExtractedInk);
+void __RPC_STUB IInkDisp_ExtractWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Clip_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkDisp_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Clone_Proxy(
+    IInkDisp* This,
+    IInkDisp **NewInk);
+void __RPC_STUB IInkDisp_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestCircle_Proxy(
+    IInkDisp* This,
+    LONG X,
+    LONG Y,
+    float radius,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestCircle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *SelectionRectangle,
+    float IntersectPercent,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestWithLasso_Proxy(
+    IInkDisp* This,
+    VARIANT Points,
+    float IntersectPercent,
+    VARIANT *LassoPoints,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestWithLasso_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_NearestPoint_Proxy(
+    IInkDisp* This,
+    LONG X,
+    LONG Y,
+    float *PointOnStroke,
+    float *DistanceFromPacket,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkDisp_NearestPoint_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CreateStrokes_Proxy(
+    IInkDisp* This,
+    VARIANT StrokeIds,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_CreateStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_AddStrokesAtRectangle_Proxy(
+    IInkDisp* This,
+    IInkStrokes *SourceStrokes,
+    IInkRectangle *TargetRectangle);
+void __RPC_STUB IInkDisp_AddStrokesAtRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Save_Proxy(
+    IInkDisp* This,
+    InkPersistenceFormat PersistenceFormat,
+    InkPersistenceCompressionMode CompressionMode,
+    VARIANT *Data);
+void __RPC_STUB IInkDisp_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Load_Proxy(
+    IInkDisp* This,
+    VARIANT Data);
+void __RPC_STUB IInkDisp_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CreateStroke_Proxy(
+    IInkDisp* This,
+    VARIANT PacketData,
+    VARIANT PacketDescription,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkDisp_CreateStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardCopyWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle,
+    InkClipboardFormats ClipboardFormats,
+    InkClipboardModes ClipboardModes,
+    IDataObject **DataObject);
+void __RPC_STUB IInkDisp_ClipboardCopyWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardCopy_Proxy(
+    IInkDisp* This,
+    IInkStrokes *strokes,
+    InkClipboardFormats ClipboardFormats,
+    InkClipboardModes ClipboardModes,
+    IDataObject **DataObject);
+void __RPC_STUB IInkDisp_ClipboardCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CanPaste_Proxy(
+    IInkDisp* This,
+    IDataObject *DataObject,
+    VARIANT_BOOL *CanPaste);
+void __RPC_STUB IInkDisp_CanPaste_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardPaste_Proxy(
+    IInkDisp* This,
+    LONG x,
+    LONG y,
+    IDataObject *DataObject,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_ClipboardPaste_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkDisp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkStrokes interface
+ */
+#ifndef __IInkStrokes_INTERFACE_DEFINED__
+#define __IInkStrokes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f1f4c9d8-590a-4963-b3ae-1935671bb6f3")
+IInkStrokes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RecognitionResult(
+        IInkRecognitionResult **RecognitionResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ToString(
+        BSTR *ToString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IInkStrokeDisp *InkStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddStrokes(
+        IInkStrokes *InkStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        IInkStrokeDisp *InkStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveStrokes(
+        IInkStrokes *InkStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyDrawingAttributes(
+        IInkDrawingAttributes *DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **BoundingBox) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Transform(
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveRecognitionResult(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3)
+#endif
+#else
+typedef struct IInkStrokesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkStrokes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkStrokes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkStrokes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkStrokes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkStrokes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkStrokes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkStrokes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkStrokes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkStrokes* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkStrokes* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkStrokes* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *get_RecognitionResult)(
+        IInkStrokes* This,
+        IInkRecognitionResult **RecognitionResult);
+
+    HRESULT (STDMETHODCALLTYPE *ToString)(
+        IInkStrokes* This,
+        BSTR *ToString);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkStrokes* This,
+        LONG Index,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkStrokes* This,
+        IInkStrokeDisp *InkStroke);
+
+    HRESULT (STDMETHODCALLTYPE *AddStrokes)(
+        IInkStrokes* This,
+        IInkStrokes *InkStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkStrokes* This,
+        IInkStrokeDisp *InkStroke);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveStrokes)(
+        IInkStrokes* This,
+        IInkStrokes *InkStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyDrawingAttributes)(
+        IInkStrokes* This,
+        IInkDrawingAttributes *DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkStrokes* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **BoundingBox);
+
+    HRESULT (STDMETHODCALLTYPE *Transform)(
+        IInkStrokes* This,
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
+        IInkStrokes* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkStrokes* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkStrokes* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkStrokes* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkStrokes* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkStrokes* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveRecognitionResult)(
+        IInkStrokes* This);
+
+    END_INTERFACE
+} IInkStrokesVtbl;
+interface IInkStrokes {
+    CONST_VTBL IInkStrokesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkStrokes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkStrokes methods ***/
+#define IInkStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkStrokes_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkStrokes_get_RecognitionResult(This,RecognitionResult) (This)->lpVtbl->get_RecognitionResult(This,RecognitionResult)
+#define IInkStrokes_ToString(This,ToString) (This)->lpVtbl->ToString(This,ToString)
+#define IInkStrokes_Item(This,Index,Stroke) (This)->lpVtbl->Item(This,Index,Stroke)
+#define IInkStrokes_Add(This,InkStroke) (This)->lpVtbl->Add(This,InkStroke)
+#define IInkStrokes_AddStrokes(This,InkStrokes) (This)->lpVtbl->AddStrokes(This,InkStrokes)
+#define IInkStrokes_Remove(This,InkStroke) (This)->lpVtbl->Remove(This,InkStroke)
+#define IInkStrokes_RemoveStrokes(This,InkStrokes) (This)->lpVtbl->RemoveStrokes(This,InkStrokes)
+#define IInkStrokes_ModifyDrawingAttributes(This,DrawAttrs) (This)->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs)
+#define IInkStrokes_GetBoundingBox(This,BoundingBoxMode,BoundingBox) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox)
+#define IInkStrokes_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
+#define IInkStrokes_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
+#define IInkStrokes_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkStrokes_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkStrokes_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokes_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokes_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkStrokes_RemoveRecognitionResult(This) (This)->lpVtbl->RemoveRecognitionResult(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkStrokes_QueryInterface(IInkStrokes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkStrokes_AddRef(IInkStrokes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkStrokes_Release(IInkStrokes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkStrokes_GetTypeInfoCount(IInkStrokes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetTypeInfo(IInkStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetIDsOfNames(IInkStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkStrokes_Invoke(IInkStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkStrokes methods ***/
+static FORCEINLINE HRESULT IInkStrokes_get_Count(IInkStrokes* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkStrokes_get__NewEnum(IInkStrokes* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkStrokes_get_Ink(IInkStrokes* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkStrokes_get_RecognitionResult(IInkStrokes* This,IInkRecognitionResult **RecognitionResult) {
+    return This->lpVtbl->get_RecognitionResult(This,RecognitionResult);
+}
+static FORCEINLINE HRESULT IInkStrokes_ToString(IInkStrokes* This,BSTR *ToString) {
+    return This->lpVtbl->ToString(This,ToString);
+}
+static FORCEINLINE HRESULT IInkStrokes_Item(IInkStrokes* This,LONG Index,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->Item(This,Index,Stroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_Add(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
+    return This->lpVtbl->Add(This,InkStroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_AddStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
+    return This->lpVtbl->AddStrokes(This,InkStrokes);
+}
+static FORCEINLINE HRESULT IInkStrokes_Remove(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
+    return This->lpVtbl->Remove(This,InkStroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_RemoveStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
+    return This->lpVtbl->RemoveStrokes(This,InkStrokes);
+}
+static FORCEINLINE HRESULT IInkStrokes_ModifyDrawingAttributes(IInkStrokes* This,IInkDrawingAttributes *DrawAttrs) {
+    return This->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetBoundingBox(IInkStrokes* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **BoundingBox) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox);
+}
+static FORCEINLINE HRESULT IInkStrokes_Transform(IInkStrokes* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
+}
+static FORCEINLINE HRESULT IInkStrokes_ScaleToRectangle(IInkStrokes* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokes_Move(IInkStrokes* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkStrokes_Rotate(IInkStrokes* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkStrokes_Shear(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokes_ScaleTransform(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokes_Clip(IInkStrokes* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokes_RemoveRecognitionResult(IInkStrokes* This) {
+    return This->lpVtbl->RemoveRecognitionResult(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_Count_Proxy(
+    IInkStrokes* This,
+    LONG *Count);
+void __RPC_STUB IInkStrokes_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get__NewEnum_Proxy(
+    IInkStrokes* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkStrokes_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_Ink_Proxy(
+    IInkStrokes* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkStrokes_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_RecognitionResult_Proxy(
+    IInkStrokes* This,
+    IInkRecognitionResult **RecognitionResult);
+void __RPC_STUB IInkStrokes_get_RecognitionResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ToString_Proxy(
+    IInkStrokes* This,
+    BSTR *ToString);
+void __RPC_STUB IInkStrokes_ToString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Item_Proxy(
+    IInkStrokes* This,
+    LONG Index,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkStrokes_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Add_Proxy(
+    IInkStrokes* This,
+    IInkStrokeDisp *InkStroke);
+void __RPC_STUB IInkStrokes_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_AddStrokes_Proxy(
+    IInkStrokes* This,
+    IInkStrokes *InkStrokes);
+void __RPC_STUB IInkStrokes_AddStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Remove_Proxy(
+    IInkStrokes* This,
+    IInkStrokeDisp *InkStroke);
+void __RPC_STUB IInkStrokes_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_RemoveStrokes_Proxy(
+    IInkStrokes* This,
+    IInkStrokes *InkStrokes);
+void __RPC_STUB IInkStrokes_RemoveStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ModifyDrawingAttributes_Proxy(
+    IInkStrokes* This,
+    IInkDrawingAttributes *DrawAttrs);
+void __RPC_STUB IInkStrokes_ModifyDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_GetBoundingBox_Proxy(
+    IInkStrokes* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **BoundingBox);
+void __RPC_STUB IInkStrokes_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Transform_Proxy(
+    IInkStrokes* This,
+    IInkTransform *Transform,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkStrokes_Transform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ScaleToRectangle_Proxy(
+    IInkStrokes* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokes_ScaleToRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Move_Proxy(
+    IInkStrokes* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkStrokes_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Rotate_Proxy(
+    IInkStrokes* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkStrokes_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Shear_Proxy(
+    IInkStrokes* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokes_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ScaleTransform_Proxy(
+    IInkStrokes* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokes_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Clip_Proxy(
+    IInkStrokes* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokes_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_RemoveRecognitionResult_Proxy(
+    IInkStrokes* This);
+void __RPC_STUB IInkStrokes_RemoveRecognitionResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkStrokes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRenderer interface
+ */
+#ifndef __IInkRenderer_INTERFACE_DEFINED__
+#define __IInkRenderer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e6257a9c-b511-4f4c-a8b0-a7dbc9506b83")
+IInkRenderer : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE GetViewTransform(
+        IInkTransform *ViewTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetViewTransform(
+        IInkTransform *ViewTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObjectTransform(
+        IInkTransform *ObjectTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetObjectTransform(
+        IInkTransform *ObjectTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Draw(
+        LONG_PTR hDC,
+        IInkStrokes *Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawStroke(
+        LONG_PTR hDC,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpace(
+        LONG_PTR hDC,
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixel(
+        LONG_PTR hdcDisplay,
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpaceFromPoints(
+        LONG_PTR hDC,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixelFromPoints(
+        LONG_PTR hDC,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Measure(
+        IInkStrokes *Strokes,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MeasureStroke(
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier,
+        VARIANT_BOOL ApplyOnPenWidth = -1) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83)
+#endif
+#else
+typedef struct IInkRendererVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRenderer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRenderer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRenderer* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRenderer* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRenderer* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRenderer* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRenderer* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRenderer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetViewTransform)(
+        IInkRenderer* This,
+        IInkTransform *ViewTransform);
+
+    HRESULT (STDMETHODCALLTYPE *SetViewTransform)(
+        IInkRenderer* This,
+        IInkTransform *ViewTransform);
+
+    HRESULT (STDMETHODCALLTYPE *GetObjectTransform)(
+        IInkRenderer* This,
+        IInkTransform *ObjectTransform);
+
+    HRESULT (STDMETHODCALLTYPE *SetObjectTransform)(
+        IInkRenderer* This,
+        IInkTransform *ObjectTransform);
+
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *DrawStroke)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *PixelToInkSpace)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixel)(
+        IInkRenderer* This,
+        LONG_PTR hdcDisplay,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *PixelToInkSpaceFromPoints)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixelFromPoints)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *Measure)(
+        IInkRenderer* This,
+        IInkStrokes *Strokes,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *MeasureStroke)(
+        IInkRenderer* This,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkRenderer* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkRenderer* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkRenderer* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    END_INTERFACE
+} IInkRendererVtbl;
+interface IInkRenderer {
+    CONST_VTBL IInkRendererVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRenderer_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRenderer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRenderer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRenderer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRenderer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRenderer methods ***/
+#define IInkRenderer_GetViewTransform(This,ViewTransform) (This)->lpVtbl->GetViewTransform(This,ViewTransform)
+#define IInkRenderer_SetViewTransform(This,ViewTransform) (This)->lpVtbl->SetViewTransform(This,ViewTransform)
+#define IInkRenderer_GetObjectTransform(This,ObjectTransform) (This)->lpVtbl->GetObjectTransform(This,ObjectTransform)
+#define IInkRenderer_SetObjectTransform(This,ObjectTransform) (This)->lpVtbl->SetObjectTransform(This,ObjectTransform)
+#define IInkRenderer_Draw(This,hDC,Strokes) (This)->lpVtbl->Draw(This,hDC,Strokes)
+#define IInkRenderer_DrawStroke(This,hDC,Stroke,DrawingAttributes) (This)->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes)
+#define IInkRenderer_PixelToInkSpace(This,hDC,x,y) (This)->lpVtbl->PixelToInkSpace(This,hDC,x,y)
+#define IInkRenderer_InkSpaceToPixel(This,hdcDisplay,x,y) (This)->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y)
+#define IInkRenderer_PixelToInkSpaceFromPoints(This,hDC,Points) (This)->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points)
+#define IInkRenderer_InkSpaceToPixelFromPoints(This,hDC,Points) (This)->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points)
+#define IInkRenderer_Measure(This,Strokes,Rectangle) (This)->lpVtbl->Measure(This,Strokes,Rectangle)
+#define IInkRenderer_MeasureStroke(This,Stroke,DrawingAttributes,Rectangle) (This)->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle)
+#define IInkRenderer_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkRenderer_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkRenderer_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRenderer_QueryInterface(IInkRenderer* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRenderer_AddRef(IInkRenderer* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRenderer_Release(IInkRenderer* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRenderer_GetTypeInfoCount(IInkRenderer* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetTypeInfo(IInkRenderer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetIDsOfNames(IInkRenderer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRenderer_Invoke(IInkRenderer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRenderer methods ***/
+static FORCEINLINE HRESULT IInkRenderer_GetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
+    return This->lpVtbl->GetViewTransform(This,ViewTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_SetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
+    return This->lpVtbl->SetViewTransform(This,ViewTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
+    return This->lpVtbl->GetObjectTransform(This,ObjectTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_SetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
+    return This->lpVtbl->SetObjectTransform(This,ObjectTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_Draw(IInkRenderer* This,LONG_PTR hDC,IInkStrokes *Strokes) {
+    return This->lpVtbl->Draw(This,hDC,Strokes);
+}
+static FORCEINLINE HRESULT IInkRenderer_DrawStroke(IInkRenderer* This,LONG_PTR hDC,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes) {
+    return This->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes);
+}
+static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpace(IInkRenderer* This,LONG_PTR hDC,LONG *x,LONG *y) {
+    return This->lpVtbl->PixelToInkSpace(This,hDC,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixel(IInkRenderer* This,LONG_PTR hdcDisplay,LONG *x,LONG *y) {
+    return This->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpaceFromPoints(IInkRenderer* This,LONG_PTR hDC,VARIANT *Points) {
+    return This->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points);
+}
+static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixelFromPoints(IInkRenderer* This,LONG_PTR hDC,VARIANT *Points) {
+    return This->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points);
+}
+static FORCEINLINE HRESULT IInkRenderer_Measure(IInkRenderer* This,IInkStrokes *Strokes,IInkRectangle **Rectangle) {
+    return This->lpVtbl->Measure(This,Strokes,Rectangle);
+}
+static FORCEINLINE HRESULT IInkRenderer_MeasureStroke(IInkRenderer* This,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes,IInkRectangle **Rectangle) {
+    return This->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle);
+}
+static FORCEINLINE HRESULT IInkRenderer_Move(IInkRenderer* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkRenderer_Rotate(IInkRenderer* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_ScaleTransform(IInkRenderer* This,float HorizontalMultiplier,float VerticalMultiplier,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRenderer_GetViewTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ViewTransform);
+void __RPC_STUB IInkRenderer_GetViewTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_SetViewTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ViewTransform);
+void __RPC_STUB IInkRenderer_SetViewTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_GetObjectTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ObjectTransform);
+void __RPC_STUB IInkRenderer_GetObjectTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_SetObjectTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ObjectTransform);
+void __RPC_STUB IInkRenderer_SetObjectTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Draw_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkRenderer_Draw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_DrawStroke_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    IInkStrokeDisp *Stroke,
+    IInkDrawingAttributes *DrawingAttributes);
+void __RPC_STUB IInkRenderer_DrawStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_PixelToInkSpace_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IInkRenderer_PixelToInkSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_InkSpaceToPixel_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hdcDisplay,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IInkRenderer_InkSpaceToPixel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_PixelToInkSpaceFromPoints_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    VARIANT *Points);
+void __RPC_STUB IInkRenderer_PixelToInkSpaceFromPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_InkSpaceToPixelFromPoints_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    VARIANT *Points);
+void __RPC_STUB IInkRenderer_InkSpaceToPixelFromPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Measure_Proxy(
+    IInkRenderer* This,
+    IInkStrokes *Strokes,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkRenderer_Measure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_MeasureStroke_Proxy(
+    IInkRenderer* This,
+    IInkStrokeDisp *Stroke,
+    IInkDrawingAttributes *DrawingAttributes,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkRenderer_MeasureStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Move_Proxy(
+    IInkRenderer* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkRenderer_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Rotate_Proxy(
+    IInkRenderer* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkRenderer_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_ScaleTransform_Proxy(
+    IInkRenderer* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkRenderer_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRenderer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursors interface
+ */
+#ifndef __IInkCursors_INTERFACE_DEFINED__
+#define __IInkCursors_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a248c1ac-c698-4e06-9e5c-d57f77c7e647")
+IInkCursors : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkCursor **Cursor) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47)
+#endif
+#else
+typedef struct IInkCursorsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursors* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursors* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursors* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursors* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursors* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursors* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursors* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursors methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCursors* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCursors* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCursors* This,
+        LONG Index,
+        IInkCursor **Cursor);
+
+    END_INTERFACE
+} IInkCursorsVtbl;
+interface IInkCursors {
+    CONST_VTBL IInkCursorsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursors_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursors_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursors_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursors_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursors_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursors_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursors_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursors methods ***/
+#define IInkCursors_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCursors_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCursors_Item(This,Index,Cursor) (This)->lpVtbl->Item(This,Index,Cursor)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursors_QueryInterface(IInkCursors* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursors_AddRef(IInkCursors* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursors_Release(IInkCursors* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursors_GetTypeInfoCount(IInkCursors* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursors_GetTypeInfo(IInkCursors* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursors_GetIDsOfNames(IInkCursors* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursors_Invoke(IInkCursors* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursors methods ***/
+static FORCEINLINE HRESULT IInkCursors_get_Count(IInkCursors* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCursors_get__NewEnum(IInkCursors* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCursors_Item(IInkCursors* This,LONG Index,IInkCursor **Cursor) {
+    return This->lpVtbl->Item(This,Index,Cursor);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursors_get_Count_Proxy(
+    IInkCursors* This,
+    LONG *Count);
+void __RPC_STUB IInkCursors_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursors_get__NewEnum_Proxy(
+    IInkCursors* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCursors_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursors_Item_Proxy(
+    IInkCursors* This,
+    LONG Index,
+    IInkCursor **Cursor);
+void __RPC_STUB IInkCursors_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursors_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCollector interface
+ */
+#ifndef __IInkCollector_INTERFACE_DEFINED__
+#define __IInkCollector_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f0f060b5-8b1f-4a7c-89ec-880692588a4f")
+IInkCollector : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_hWnd(
+        LONG_PTR *CurrentWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_hWnd(
+        LONG_PTR NewWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Enabled(
+        VARIANT_BOOL *Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Enabled(
+        VARIANT_BOOL Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DefaultDrawingAttributes(
+        IInkDrawingAttributes **CurrentAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DefaultDrawingAttributes(
+        IInkDrawingAttributes *NewAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Renderer(
+        IInkRenderer **CurrentInkRenderer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_Renderer(
+        IInkRenderer *NewInkRenderer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_Ink(
+        IInkDisp *NewInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AutoRedraw(
+        VARIANT_BOOL *AutoRedraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AutoRedraw(
+        VARIANT_BOOL AutoRedraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CollectingInk(
+        VARIANT_BOOL *Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CollectionMode(
+        InkCollectionMode *Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CollectionMode(
+        InkCollectionMode Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DynamicRendering(
+        VARIANT_BOOL *Enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DynamicRendering(
+        VARIANT_BOOL Enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DesiredPacketDescription(
+        VARIANT *PacketGuids) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DesiredPacketDescription(
+        VARIANT PacketGuids) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MouseIcon(
+        IPictureDisp **MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MouseIcon(
+        IPictureDisp *MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_MouseIcon(
+        IPictureDisp *MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MousePointer(
+        InkMousePointer *MousePointer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MousePointer(
+        InkMousePointer MousePointer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Cursors(
+        IInkCursors **Cursors) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MarginX(
+        LONG *MarginX) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MarginX(
+        LONG MarginX) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MarginY(
+        LONG *MarginY) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MarginY(
+        LONG MarginY) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
+        IInkTablet **SingleTablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SupportHighContrastInk(
+        VARIANT_BOOL *Support) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SupportHighContrastInk(
+        VARIANT_BOOL Support) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGestureStatus(
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL Listen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGestureStatus(
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL *Listening) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWindowInputRectangle(
+        IInkRectangle **WindowInputRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetWindowInputRectangle(
+        IInkRectangle *WindowInputRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAllTabletsMode(
+        VARIANT_BOOL UseMouseForInput = -1) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSingleTabletIntegratedMode(
+        IInkTablet *Tablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEventInterest(
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL *Listen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEventInterest(
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL Listen) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f)
+#endif
+#else
+typedef struct IInkCollectorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCollector* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCollector* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCollector* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCollector* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCollector* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCollector* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCollector* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCollector methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_hWnd)(
+        IInkCollector* This,
+        LONG_PTR *CurrentWindow);
+
+    HRESULT (STDMETHODCALLTYPE *put_hWnd)(
+        IInkCollector* This,
+        LONG_PTR NewWindow);
+
+    HRESULT (STDMETHODCALLTYPE *get_Enabled)(
+        IInkCollector* This,
+        VARIANT_BOOL *Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *put_Enabled)(
+        IInkCollector* This,
+        VARIANT_BOOL Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultDrawingAttributes)(
+        IInkCollector* This,
+        IInkDrawingAttributes **CurrentAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DefaultDrawingAttributes)(
+        IInkCollector* This,
+        IInkDrawingAttributes *NewAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *get_Renderer)(
+        IInkCollector* This,
+        IInkRenderer **CurrentInkRenderer);
+
+    HRESULT (STDMETHODCALLTYPE *putref_Renderer)(
+        IInkCollector* This,
+        IInkRenderer *NewInkRenderer);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkCollector* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *putref_Ink)(
+        IInkCollector* This,
+        IInkDisp *NewInk);
+
+    HRESULT (STDMETHODCALLTYPE *get_AutoRedraw)(
+        IInkCollector* This,
+        VARIANT_BOOL *AutoRedraw);
+
+    HRESULT (STDMETHODCALLTYPE *put_AutoRedraw)(
+        IInkCollector* This,
+        VARIANT_BOOL AutoRedraw);
+
+    HRESULT (STDMETHODCALLTYPE *get_CollectingInk)(
+        IInkCollector* This,
+        VARIANT_BOOL *Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *get_CollectionMode)(
+        IInkCollector* This,
+        InkCollectionMode *Mode);
+
+    HRESULT (STDMETHODCALLTYPE *put_CollectionMode)(
+        IInkCollector* This,
+        InkCollectionMode Mode);
+
+    HRESULT (STDMETHODCALLTYPE *get_DynamicRendering)(
+        IInkCollector* This,
+        VARIANT_BOOL *Enabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_DynamicRendering)(
+        IInkCollector* This,
+        VARIANT_BOOL Enabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_DesiredPacketDescription)(
+        IInkCollector* This,
+        VARIANT *PacketGuids);
+
+    HRESULT (STDMETHODCALLTYPE *put_DesiredPacketDescription)(
+        IInkCollector* This,
+        VARIANT PacketGuids);
+
+    HRESULT (STDMETHODCALLTYPE *get_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp **MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *put_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp *MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *putref_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp *MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *get_MousePointer)(
+        IInkCollector* This,
+        InkMousePointer *MousePointer);
+
+    HRESULT (STDMETHODCALLTYPE *put_MousePointer)(
+        IInkCollector* This,
+        InkMousePointer MousePointer);
+
+    HRESULT (STDMETHODCALLTYPE *get_Cursors)(
+        IInkCollector* This,
+        IInkCursors **Cursors);
+
+    HRESULT (STDMETHODCALLTYPE *get_MarginX)(
+        IInkCollector* This,
+        LONG *MarginX);
+
+    HRESULT (STDMETHODCALLTYPE *put_MarginX)(
+        IInkCollector* This,
+        LONG MarginX);
+
+    HRESULT (STDMETHODCALLTYPE *get_MarginY)(
+        IInkCollector* This,
+        LONG *MarginY);
+
+    HRESULT (STDMETHODCALLTYPE *put_MarginY)(
+        IInkCollector* This,
+        LONG MarginY);
+
+    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
+        IInkCollector* This,
+        IInkTablet **SingleTablet);
+
+    HRESULT (STDMETHODCALLTYPE *get_SupportHighContrastInk)(
+        IInkCollector* This,
+        VARIANT_BOOL *Support);
+
+    HRESULT (STDMETHODCALLTYPE *put_SupportHighContrastInk)(
+        IInkCollector* This,
+        VARIANT_BOOL Support);
+
+    HRESULT (STDMETHODCALLTYPE *SetGestureStatus)(
+        IInkCollector* This,
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL Listen);
+
+    HRESULT (STDMETHODCALLTYPE *GetGestureStatus)(
+        IInkCollector* This,
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL *Listening);
+
+    HRESULT (STDMETHODCALLTYPE *GetWindowInputRectangle)(
+        IInkCollector* This,
+        IInkRectangle **WindowInputRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *SetWindowInputRectangle)(
+        IInkCollector* This,
+        IInkRectangle *WindowInputRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllTabletsMode)(
+        IInkCollector* This,
+        VARIANT_BOOL UseMouseForInput);
+
+    HRESULT (STDMETHODCALLTYPE *SetSingleTabletIntegratedMode)(
+        IInkCollector* This,
+        IInkTablet *Tablet);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventInterest)(
+        IInkCollector* This,
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL *Listen);
+
+    HRESULT (STDMETHODCALLTYPE *SetEventInterest)(
+        IInkCollector* This,
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL Listen);
+
+    END_INTERFACE
+} IInkCollectorVtbl;
+interface IInkCollector {
+    CONST_VTBL IInkCollectorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCollector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCollector_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCollector_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCollector_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCollector_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCollector_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCollector_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCollector methods ***/
+#define IInkCollector_get_hWnd(This,CurrentWindow) (This)->lpVtbl->get_hWnd(This,CurrentWindow)
+#define IInkCollector_put_hWnd(This,NewWindow) (This)->lpVtbl->put_hWnd(This,NewWindow)
+#define IInkCollector_get_Enabled(This,Collecting) (This)->lpVtbl->get_Enabled(This,Collecting)
+#define IInkCollector_put_Enabled(This,Collecting) (This)->lpVtbl->put_Enabled(This,Collecting)
+#define IInkCollector_get_DefaultDrawingAttributes(This,CurrentAttributes) (This)->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes)
+#define IInkCollector_putref_DefaultDrawingAttributes(This,NewAttributes) (This)->lpVtbl->putref_DefaultDrawingAttributes(This,NewAttributes)
+#define IInkCollector_get_Renderer(This,CurrentInkRenderer) (This)->lpVtbl->get_Renderer(This,CurrentInkRenderer)
+#define IInkCollector_putref_Renderer(This,NewInkRenderer) (This)->lpVtbl->putref_Renderer(This,NewInkRenderer)
+#define IInkCollector_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkCollector_putref_Ink(This,NewInk) (This)->lpVtbl->putref_Ink(This,NewInk)
+#define IInkCollector_get_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->get_AutoRedraw(This,AutoRedraw)
+#define IInkCollector_put_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->put_AutoRedraw(This,AutoRedraw)
+#define IInkCollector_get_CollectingInk(This,Collecting) (This)->lpVtbl->get_CollectingInk(This,Collecting)
+#define IInkCollector_get_CollectionMode(This,Mode) (This)->lpVtbl->get_CollectionMode(This,Mode)
+#define IInkCollector_put_CollectionMode(This,Mode) (This)->lpVtbl->put_CollectionMode(This,Mode)
+#define IInkCollector_get_DynamicRendering(This,Enabled) (This)->lpVtbl->get_DynamicRendering(This,Enabled)
+#define IInkCollector_put_DynamicRendering(This,Enabled) (This)->lpVtbl->put_DynamicRendering(This,Enabled)
+#define IInkCollector_get_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->get_DesiredPacketDescription(This,PacketGuids)
+#define IInkCollector_put_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->put_DesiredPacketDescription(This,PacketGuids)
+#define IInkCollector_get_MouseIcon(This,MouseIcon) (This)->lpVtbl->get_MouseIcon(This,MouseIcon)
+#define IInkCollector_put_MouseIcon(This,MouseIcon) (This)->lpVtbl->put_MouseIcon(This,MouseIcon)
+#define IInkCollector_putref_MouseIcon(This,MouseIcon) (This)->lpVtbl->putref_MouseIcon(This,MouseIcon)
+#define IInkCollector_get_MousePointer(This,MousePointer) (This)->lpVtbl->get_MousePointer(This,MousePointer)
+#define IInkCollector_put_MousePointer(This,MousePointer) (This)->lpVtbl->put_MousePointer(This,MousePointer)
+#define IInkCollector_get_Cursors(This,Cursors) (This)->lpVtbl->get_Cursors(This,Cursors)
+#define IInkCollector_get_MarginX(This,MarginX) (This)->lpVtbl->get_MarginX(This,MarginX)
+#define IInkCollector_put_MarginX(This,MarginX) (This)->lpVtbl->put_MarginX(This,MarginX)
+#define IInkCollector_get_MarginY(This,MarginY) (This)->lpVtbl->get_MarginY(This,MarginY)
+#define IInkCollector_put_MarginY(This,MarginY) (This)->lpVtbl->put_MarginY(This,MarginY)
+#define IInkCollector_get_Tablet(This,SingleTablet) (This)->lpVtbl->get_Tablet(This,SingleTablet)
+#define IInkCollector_get_SupportHighContrastInk(This,Support) (This)->lpVtbl->get_SupportHighContrastInk(This,Support)
+#define IInkCollector_put_SupportHighContrastInk(This,Support) (This)->lpVtbl->put_SupportHighContrastInk(This,Support)
+#define IInkCollector_SetGestureStatus(This,Gesture,Listen) (This)->lpVtbl->SetGestureStatus(This,Gesture,Listen)
+#define IInkCollector_GetGestureStatus(This,Gesture,Listening) (This)->lpVtbl->GetGestureStatus(This,Gesture,Listening)
+#define IInkCollector_GetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle)
+#define IInkCollector_SetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle)
+#define IInkCollector_SetAllTabletsMode(This,UseMouseForInput) (This)->lpVtbl->SetAllTabletsMode(This,UseMouseForInput)
+#define IInkCollector_SetSingleTabletIntegratedMode(This,Tablet) (This)->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet)
+#define IInkCollector_GetEventInterest(This,EventId,Listen) (This)->lpVtbl->GetEventInterest(This,EventId,Listen)
+#define IInkCollector_SetEventInterest(This,EventId,Listen) (This)->lpVtbl->SetEventInterest(This,EventId,Listen)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCollector_QueryInterface(IInkCollector* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCollector_AddRef(IInkCollector* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCollector_Release(IInkCollector* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCollector_GetTypeInfoCount(IInkCollector* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCollector_GetTypeInfo(IInkCollector* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCollector_GetIDsOfNames(IInkCollector* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCollector_Invoke(IInkCollector* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCollector methods ***/
+static FORCEINLINE HRESULT IInkCollector_get_hWnd(IInkCollector* This,LONG_PTR *CurrentWindow) {
+    return This->lpVtbl->get_hWnd(This,CurrentWindow);
+}
+static FORCEINLINE HRESULT IInkCollector_put_hWnd(IInkCollector* This,LONG_PTR NewWindow) {
+    return This->lpVtbl->put_hWnd(This,NewWindow);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Enabled(IInkCollector* This,VARIANT_BOOL *Collecting) {
+    return This->lpVtbl->get_Enabled(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_put_Enabled(IInkCollector* This,VARIANT_BOOL Collecting) {
+    return This->lpVtbl->put_Enabled(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes **CurrentAttributes) {
+    return This->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes *NewAttributes) {
+    return This->lpVtbl->putref_DefaultDrawingAttributes(This,NewAttributes);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Renderer(IInkCollector* This,IInkRenderer **CurrentInkRenderer) {
+    return This->lpVtbl->get_Renderer(This,CurrentInkRenderer);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_Renderer(IInkCollector* This,IInkRenderer *NewInkRenderer) {
+    return This->lpVtbl->putref_Renderer(This,NewInkRenderer);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Ink(IInkCollector* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_Ink(IInkCollector* This,IInkDisp *NewInk) {
+    return This->lpVtbl->putref_Ink(This,NewInk);
+}
+static FORCEINLINE HRESULT IInkCollector_get_AutoRedraw(IInkCollector* This,VARIANT_BOOL *AutoRedraw) {
+    return This->lpVtbl->get_AutoRedraw(This,AutoRedraw);
+}
+static FORCEINLINE HRESULT IInkCollector_put_AutoRedraw(IInkCollector* This,VARIANT_BOOL AutoRedraw) {
+    return This->lpVtbl->put_AutoRedraw(This,AutoRedraw);
+}
+static FORCEINLINE HRESULT IInkCollector_get_CollectingInk(IInkCollector* This,VARIANT_BOOL *Collecting) {
+    return This->lpVtbl->get_CollectingInk(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_get_CollectionMode(IInkCollector* This,InkCollectionMode *Mode) {
+    return This->lpVtbl->get_CollectionMode(This,Mode);
+}
+static FORCEINLINE HRESULT IInkCollector_put_CollectionMode(IInkCollector* This,InkCollectionMode Mode) {
+    return This->lpVtbl->put_CollectionMode(This,Mode);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DynamicRendering(IInkCollector* This,VARIANT_BOOL *Enabled) {
+    return This->lpVtbl->get_DynamicRendering(This,Enabled);
+}
+static FORCEINLINE HRESULT IInkCollector_put_DynamicRendering(IInkCollector* This,VARIANT_BOOL Enabled) {
+    return This->lpVtbl->put_DynamicRendering(This,Enabled);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DesiredPacketDescription(IInkCollector* This,VARIANT *PacketGuids) {
+    return This->lpVtbl->get_DesiredPacketDescription(This,PacketGuids);
+}
+static FORCEINLINE HRESULT IInkCollector_put_DesiredPacketDescription(IInkCollector* This,VARIANT PacketGuids) {
+    return This->lpVtbl->put_DesiredPacketDescription(This,PacketGuids);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MouseIcon(IInkCollector* This,IPictureDisp **MouseIcon) {
+    return This->lpVtbl->get_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
+    return This->lpVtbl->put_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
+    return This->lpVtbl->putref_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MousePointer(IInkCollector* This,InkMousePointer *MousePointer) {
+    return This->lpVtbl->get_MousePointer(This,MousePointer);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MousePointer(IInkCollector* This,InkMousePointer MousePointer) {
+    return This->lpVtbl->put_MousePointer(This,MousePointer);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Cursors(IInkCollector* This,IInkCursors **Cursors) {
+    return This->lpVtbl->get_Cursors(This,Cursors);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MarginX(IInkCollector* This,LONG *MarginX) {
+    return This->lpVtbl->get_MarginX(This,MarginX);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MarginX(IInkCollector* This,LONG MarginX) {
+    return This->lpVtbl->put_MarginX(This,MarginX);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MarginY(IInkCollector* This,LONG *MarginY) {
+    return This->lpVtbl->get_MarginY(This,MarginY);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MarginY(IInkCollector* This,LONG MarginY) {
+    return This->lpVtbl->put_MarginY(This,MarginY);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Tablet(IInkCollector* This,IInkTablet **SingleTablet) {
+    return This->lpVtbl->get_Tablet(This,SingleTablet);
+}
+static FORCEINLINE HRESULT IInkCollector_get_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL *Support) {
+    return This->lpVtbl->get_SupportHighContrastInk(This,Support);
+}
+static FORCEINLINE HRESULT IInkCollector_put_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL Support) {
+    return This->lpVtbl->put_SupportHighContrastInk(This,Support);
+}
+static FORCEINLINE HRESULT IInkCollector_SetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL Listen) {
+    return This->lpVtbl->SetGestureStatus(This,Gesture,Listen);
+}
+static FORCEINLINE HRESULT IInkCollector_GetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL *Listening) {
+    return This->lpVtbl->GetGestureStatus(This,Gesture,Listening);
+}
+static FORCEINLINE HRESULT IInkCollector_GetWindowInputRectangle(IInkCollector* This,IInkRectangle **WindowInputRectangle) {
+    return This->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle);
+}
+static FORCEINLINE HRESULT IInkCollector_SetWindowInputRectangle(IInkCollector* This,IInkRectangle *WindowInputRectangle) {
+    return This->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle);
+}
+static FORCEINLINE HRESULT IInkCollector_SetAllTabletsMode(IInkCollector* This,VARIANT_BOOL UseMouseForInput) {
+    return This->lpVtbl->SetAllTabletsMode(This,UseMouseForInput);
+}
+static FORCEINLINE HRESULT IInkCollector_SetSingleTabletIntegratedMode(IInkCollector* This,IInkTablet *Tablet) {
+    return This->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet);
+}
+static FORCEINLINE HRESULT IInkCollector_GetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL *Listen) {
+    return This->lpVtbl->GetEventInterest(This,EventId,Listen);
+}
+static FORCEINLINE HRESULT IInkCollector_SetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL Listen) {
+    return This->lpVtbl->SetEventInterest(This,EventId,Listen);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCollector_get_hWnd_Proxy(
+    IInkCollector* This,
+    LONG_PTR *CurrentWindow);
+void __RPC_STUB IInkCollector_get_hWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_hWnd_Proxy(
+    IInkCollector* This,
+    LONG_PTR NewWindow);
+void __RPC_STUB IInkCollector_put_hWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Enabled_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Collecting);
+void __RPC_STUB IInkCollector_get_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_Enabled_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Collecting);
+void __RPC_STUB IInkCollector_put_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DefaultDrawingAttributes_Proxy(
+    IInkCollector* This,
+    IInkDrawingAttributes **CurrentAttributes);
+void __RPC_STUB IInkCollector_get_DefaultDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_DefaultDrawingAttributes_Proxy(
+    IInkCollector* This,
+    IInkDrawingAttributes *NewAttributes);
+void __RPC_STUB IInkCollector_putref_DefaultDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Renderer_Proxy(
+    IInkCollector* This,
+    IInkRenderer **CurrentInkRenderer);
+void __RPC_STUB IInkCollector_get_Renderer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_Renderer_Proxy(
+    IInkCollector* This,
+    IInkRenderer *NewInkRenderer);
+void __RPC_STUB IInkCollector_putref_Renderer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Ink_Proxy(
+    IInkCollector* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkCollector_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_Ink_Proxy(
+    IInkCollector* This,
+    IInkDisp *NewInk);
+void __RPC_STUB IInkCollector_putref_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_AutoRedraw_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *AutoRedraw);
+void __RPC_STUB IInkCollector_get_AutoRedraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_AutoRedraw_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL AutoRedraw);
+void __RPC_STUB IInkCollector_put_AutoRedraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_CollectingInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Collecting);
+void __RPC_STUB IInkCollector_get_CollectingInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_CollectionMode_Proxy(
+    IInkCollector* This,
+    InkCollectionMode *Mode);
+void __RPC_STUB IInkCollector_get_CollectionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_CollectionMode_Proxy(
+    IInkCollector* This,
+    InkCollectionMode Mode);
+void __RPC_STUB IInkCollector_put_CollectionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DynamicRendering_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Enabled);
+void __RPC_STUB IInkCollector_get_DynamicRendering_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_DynamicRendering_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Enabled);
+void __RPC_STUB IInkCollector_put_DynamicRendering_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DesiredPacketDescription_Proxy(
+    IInkCollector* This,
+    VARIANT *PacketGuids);
+void __RPC_STUB IInkCollector_get_DesiredPacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_DesiredPacketDescription_Proxy(
+    IInkCollector* This,
+    VARIANT PacketGuids);
+void __RPC_STUB IInkCollector_put_DesiredPacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp **MouseIcon);
+void __RPC_STUB IInkCollector_get_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp *MouseIcon);
+void __RPC_STUB IInkCollector_put_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp *MouseIcon);
+void __RPC_STUB IInkCollector_putref_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MousePointer_Proxy(
+    IInkCollector* This,
+    InkMousePointer *MousePointer);
+void __RPC_STUB IInkCollector_get_MousePointer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MousePointer_Proxy(
+    IInkCollector* This,
+    InkMousePointer MousePointer);
+void __RPC_STUB IInkCollector_put_MousePointer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Cursors_Proxy(
+    IInkCollector* This,
+    IInkCursors **Cursors);
+void __RPC_STUB IInkCollector_get_Cursors_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MarginX_Proxy(
+    IInkCollector* This,
+    LONG *MarginX);
+void __RPC_STUB IInkCollector_get_MarginX_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MarginX_Proxy(
+    IInkCollector* This,
+    LONG MarginX);
+void __RPC_STUB IInkCollector_put_MarginX_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MarginY_Proxy(
+    IInkCollector* This,
+    LONG *MarginY);
+void __RPC_STUB IInkCollector_get_MarginY_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MarginY_Proxy(
+    IInkCollector* This,
+    LONG MarginY);
+void __RPC_STUB IInkCollector_put_MarginY_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Tablet_Proxy(
+    IInkCollector* This,
+    IInkTablet **SingleTablet);
+void __RPC_STUB IInkCollector_get_Tablet_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_SupportHighContrastInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Support);
+void __RPC_STUB IInkCollector_get_SupportHighContrastInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_SupportHighContrastInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Support);
+void __RPC_STUB IInkCollector_put_SupportHighContrastInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetGestureStatus_Proxy(
+    IInkCollector* This,
+    InkApplicationGesture Gesture,
+    VARIANT_BOOL Listen);
+void __RPC_STUB IInkCollector_SetGestureStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetGestureStatus_Proxy(
+    IInkCollector* This,
+    InkApplicationGesture Gesture,
+    VARIANT_BOOL *Listening);
+void __RPC_STUB IInkCollector_GetGestureStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetWindowInputRectangle_Proxy(
+    IInkCollector* This,
+    IInkRectangle **WindowInputRectangle);
+void __RPC_STUB IInkCollector_GetWindowInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetWindowInputRectangle_Proxy(
+    IInkCollector* This,
+    IInkRectangle *WindowInputRectangle);
+void __RPC_STUB IInkCollector_SetWindowInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetAllTabletsMode_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL UseMouseForInput);
+void __RPC_STUB IInkCollector_SetAllTabletsMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetSingleTabletIntegratedMode_Proxy(
+    IInkCollector* This,
+    IInkTablet *Tablet);
+void __RPC_STUB IInkCollector_SetSingleTabletIntegratedMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetEventInterest_Proxy(
+    IInkCollector* This,
+    InkCollectorEventInterest EventId,
+    VARIANT_BOOL *Listen);
+void __RPC_STUB IInkCollector_GetEventInterest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetEventInterest_Proxy(
+    IInkCollector* This,
+    InkCollectorEventInterest EventId,
+    VARIANT_BOOL Listen);
+void __RPC_STUB IInkCollector_SetEventInterest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCollector_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * _IInkCollectorEvents dispinterface
+ */
+#ifndef ___IInkCollectorEvents_DISPINTERFACE_DEFINED__
+#define ___IInkCollectorEvents_DISPINTERFACE_DEFINED__
+
+DEFINE_GUID(DIID__IInkCollectorEvents, 0x11a583f2, 0x712d, 0x4fea, 0xab,0xcf, 0xab,0x4a,0xf3,0x8e,0xa0,0x6b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("11a583f2-712d-4fea-abcf-ab4af38ea06b")
+_IInkCollectorEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(_IInkCollectorEvents, 0x11a583f2, 0x712d, 0x4fea, 0xab,0xcf, 0xab,0x4a,0xf3,0x8e,0xa0,0x6b)
+#endif
+#else
+typedef struct _IInkCollectorEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        _IInkCollectorEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        _IInkCollectorEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        _IInkCollectorEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        _IInkCollectorEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        _IInkCollectorEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        _IInkCollectorEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        _IInkCollectorEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    END_INTERFACE
+} _IInkCollectorEventsVtbl;
+interface _IInkCollectorEvents {
+    CONST_VTBL _IInkCollectorEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define _IInkCollectorEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define _IInkCollectorEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define _IInkCollectorEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define _IInkCollectorEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define _IInkCollectorEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define _IInkCollectorEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define _IInkCollectorEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT _IInkCollectorEvents_QueryInterface(_IInkCollectorEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG _IInkCollectorEvents_AddRef(_IInkCollectorEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG _IInkCollectorEvents_Release(_IInkCollectorEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetTypeInfoCount(_IInkCollectorEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetTypeInfo(_IInkCollectorEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetIDsOfNames(_IInkCollectorEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_Invoke(_IInkCollectorEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+#endif
+#endif
+
+#endif
+
+#endif  /* ___IInkCollectorEvents_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * InkCollector coclass
+ */
+
+DEFINE_GUID(CLSID_InkCollector, 0x43fb1553, 0xad74, 0x4ee8, 0x88,0xe4, 0x3e,0x6d,0xaa,0xc9,0x15,0xdb);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("43fb1553-ad74-4ee8-88e4-3e6daac915db") InkCollector;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(InkCollector, 0x43fb1553, 0xad74, 0x4ee8, 0x88,0xe4, 0x3e,0x6d,0xaa,0xc9,0x15,0xdb)
+#endif
+#endif
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __msinkaut_h__ */
diff --git a/x86_64-w64-mingw32/include/msinkaut_i.c b/x86_64-w64-mingw32/include/msinkaut_i.c
new file mode 100644
index 0000000..1edf4f7
--- /dev/null
+++ b/x86_64-w64-mingw32/include/msinkaut_i.c
@@ -0,0 +1,56 @@
+/*** Autogenerated by WIDL 1.6 from include/msinkaut.idl - Do not edit ***/
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+    DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+    const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+MIDL_DEFINE_GUID(IID, IID_IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e);
+MIDL_DEFINE_GUID(IID, IID_IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f);
+MIDL_DEFINE_GUID(IID, IID_IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92);
+MIDL_DEFINE_GUID(IID, IID_IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e);
+MIDL_DEFINE_GUID(IID, IID_IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d);
+MIDL_DEFINE_GUID(IID, IID_IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94);
+MIDL_DEFINE_GUID(IID, IID_IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54);
+MIDL_DEFINE_GUID(IID, IID_IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58);
+MIDL_DEFINE_GUID(IID, IID_IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7);
+MIDL_DEFINE_GUID(IID, IID_IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84);
+MIDL_DEFINE_GUID(IID, IID_IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a);
+MIDL_DEFINE_GUID(IID, IID_IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d);
+MIDL_DEFINE_GUID(IID, IID_IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2);
+MIDL_DEFINE_GUID(IID, IID_IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1);
+MIDL_DEFINE_GUID(IID, IID_IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6);
+MIDL_DEFINE_GUID(IID, IID_IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3);
+MIDL_DEFINE_GUID(IID, IID_IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83);
+MIDL_DEFINE_GUID(IID, IID_IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47);
+MIDL_DEFINE_GUID(IID, IID_IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f);
+MIDL_DEFINE_GUID(IID, DIID__IInkCollectorEvents, 0x11a583f2, 0x712d, 0x4fea, 0xab,0xcf, 0xab,0x4a,0xf3,0x8e,0xa0,0x6b);
+MIDL_DEFINE_GUID(CLSID, CLSID_InkCollector, 0x43fb1553, 0xad74, 0x4ee8, 0x88,0xe4, 0x3e,0x6d,0xaa,0xc9,0x15,0xdb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef MIDL_DEFINE_GUID
diff --git a/x86_64-w64-mingw32/include/propsys.h b/x86_64-w64-mingw32/include/propsys.h
index a0099a4..088e998 100644
--- a/x86_64-w64-mingw32/include/propsys.h
+++ b/x86_64-w64-mingw32/include/propsys.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/propsys.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/propsys.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h b/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h
index ce2b15c..7da3238 100644
--- a/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h
+++ b/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h
@@ -66,6 +66,26 @@
 #ifndef _INTRIN_MAC_
 #define _INTRIN_MAC_
 
+/* GCC v6 added support for outputting flags.  This allows better code to be
+   produced for a number of intrinsics. */
+#ifndef __GCC_ASM_FLAG_OUTPUTS__
+#define __FLAGCONSTRAINT "=qm"
+#define __FLAGSET "\n\tsetc %[old]"
+#define __FLAGCLOBBER1 , "cc"
+#define __FLAGCLOBBER2 "cc"
+#else
+#define __FLAGCONSTRAINT "=@ccc"
+#define __FLAGSET
+#define __FLAGCLOBBER1
+#define __FLAGCLOBBER2
+#endif
+
+/* Clang has support for MSVC builtins, GCC doesn't */
+#pragma push_macro("__has_builtin")
+#ifndef __has_builtin
+  #define __has_builtin(x) 0
+#endif
+
 /* This macro is used by __stosb, __stosw, __stosd, __stosq */
 
 /* Parameters: (FunctionName, DataType, Operator)
@@ -109,9 +129,9 @@
 { \
    unsigned char old; \
    __asm__ __volatile__ (z \
-      : [old] "=qm" (old), [Base] "+m" (*Base) \
+      : [old] __FLAGCONSTRAINT (old), [Base] "+m" (*Base) \
       : [Offset] a "r" (Offset) \
-      : "memory", "cc"); \
+      : "memory" __FLAGCLOBBER1); \
    return old; \
 }
 #elif defined(__arm__) || defined(_ARM_)
@@ -193,6 +213,9 @@
    DataType: unsigned __LONG32 or unsigned __int64
    Statement: BSF or BSR */
 
+/* GCC v6 added support for outputting flags.  This allows better code to be
+   produced for a number of intrinsics. */
+#ifndef __GCC_ASM_FLAG_OUTPUTS__
 #define __buildbitscan(x, y, z) unsigned char x(unsigned __LONG32 *Index, y Mask) \
 { \
    y n; \
@@ -203,6 +226,18 @@
    *Index = n; \
    return Mask!=0; \
 }
+#else
+#define __buildbitscan(x, y, z) unsigned char x(unsigned __LONG32 *Index, y Mask) \
+{ \
+   y n; \
+   unsigned char old; \
+   __asm__ (z \
+      : "=@ccnz" (old), [Index] "=r" (n) \
+      : [Mask] "r" (Mask)); \
+   *Index = n; \
+   return old; \
+}
+#endif
 
 /* This macro is used by _bittest & _bittest64
 
@@ -216,10 +251,10 @@
 #define __buildbittest(x, y, z, a) unsigned char x(const y *Base, y Offset) \
 { \
    unsigned char old; \
-   __asm__ ("bt{" z " %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]" \
-      : [old] "=rm" (old) \
+   __asm__ ("bt{" z " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET \
+      : [old] __FLAGCONSTRAINT (old) \
       : [Offset] a "r" (Offset), [Base] "rm" (*Base) \
-      : "cc"); \
+      : __FLAGCLOBBER2); \
    return old; \
 }
 
@@ -236,10 +271,10 @@
 #define __buildbittestand(x, y, z, a, b) unsigned char x(y *Base, y Offset) \
 { \
    unsigned char old; \
-   __asm__ (z "{" b " %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]" \
-      : [old] "=r" (old), [Base] "+rm" (*Base) \
+   __asm__ (z "{" b " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET \
+      : [old] __FLAGCONSTRAINT (old), [Base] "+rm" (*Base) \
       : [Offset] a "r" (Offset) \
-      : "cc"); \
+      : __FLAGCLOBBER2); \
    return old; \
 }
 
@@ -430,11 +465,13 @@
 #define __INTRINSIC_SPECIAL__InterlockedCompareExchange16
 #define __INTRINSIC_SPECIAL__InterlockedIncrement
 #define __INTRINSIC_SPECIAL__InterlockedDecrement
+#define __INTRINSIC_SPECIAL__InterlockedAdd
 #define __INTRINSIC_SPECIAL__InterlockedExchange
 #define __INTRINSIC_SPECIAL__InterlockedExchangeAdd
 #define __INTRINSIC_SPECIAL__InterlockedCompareExchange
 #define __INTRINSIC_SPECIAL__InterlockedIncrement64
 #define __INTRINSIC_SPECIAL__InterlockedDecrement64
+#define __INTRINSIC_SPECIAL__InterlockedAdd64
 #define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64
 #define __INTRINSIC_SPECIAL__InterlockedExchange64
 #define __INTRINSIC_SPECIAL__InterlockedCompareExchange64
@@ -481,6 +518,7 @@
 
 #define __INTRINSIC_SPECIAL__InterlockedIncrement
 #define __INTRINSIC_SPECIAL__InterlockedDecrement
+#define __INTRINSIC_SPECIAL__InterlockedAdd
 #define __INTRINSIC_SPECIAL__InterlockedExchange
 #define __INTRINSIC_SPECIAL__InterlockedExchangeAdd
 #define __INTRINSIC_SPECIAL__InterlockedCompareExchange
@@ -491,6 +529,7 @@
 #define __INTRINSIC_SPECIAL__InterlockedXor64
 #define __INTRINSIC_SPECIAL__InterlockedIncrement64
 #define __INTRINSIC_SPECIAL__InterlockedDecrement64
+#define __INTRINSIC_SPECIAL__InterlockedAdd64
 #define __INTRINSIC_SPECIAL__InterlockedExchange64
 #define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64
 #define __INTRINSIC_SPECIAL__InterlockedCompareExchange64
@@ -552,42 +591,42 @@
 #if __INTRINSIC_PROLOG(_interlockedbittestandset64)
 __MINGW_EXTENSION unsigned char _interlockedbittestandset64(__int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandset64, __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(_interlockedbittestandset64, __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED__interlockedbittestandset64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandreset64)
 __MINGW_EXTENSION unsigned char _interlockedbittestandreset64(__int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandreset64, __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(_interlockedbittestandreset64, __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED__interlockedbittestandreset64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandcomplement64)
 __MINGW_EXTENSION unsigned char _interlockedbittestandcomplement64(__int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED__interlockedbittestandcomplement64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndSet64)
 __MINGW_EXTENSION unsigned char InterlockedBitTestAndSet64(volatile __int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(InterlockedBitTestAndSet64, volatile __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(InterlockedBitTestAndSet64, volatile __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndSet64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndReset64)
 __MINGW_EXTENSION unsigned char InterlockedBitTestAndReset64(volatile __int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(InterlockedBitTestAndReset64, volatile __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(InterlockedBitTestAndReset64, volatile __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndReset64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndComplement64)
 __MINGW_EXTENSION unsigned char InterlockedBitTestAndComplement64(volatile __int64 *a, __int64 b);
 __INTRINSICS_USEINLINE 
-__buildbittesti(InterlockedBitTestAndComplement64, volatile __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "J", __int64)
+__buildbittesti(InterlockedBitTestAndComplement64, volatile __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement64
 #endif /* __INTRINSIC_PROLOG */
 
@@ -982,46 +1021,74 @@
 
 #if __INTRINSIC_PROLOG(_InterlockedExchangeAdd)
 __LONG32 _InterlockedExchangeAdd(__LONG32 volatile *Addend, __LONG32 Value);
+#if !__has_builtin(_InterlockedExchangeAdd)
 __INTRINSICS_USEINLINE 
 __LONG32 _InterlockedExchangeAdd(__LONG32 volatile *Addend, __LONG32 Value) {
     return __sync_fetch_and_add(Addend, Value);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedExchangeAdd
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_InterlockedCompareExchange)
 __LONG32 _InterlockedCompareExchange(__LONG32 volatile *Destination, __LONG32 ExChange, __LONG32 Comperand);
+#if !__has_builtin(_InterlockedCompareExchange)
 __INTRINSICS_USEINLINE 
 __LONG32 _InterlockedCompareExchange(__LONG32 volatile *Destination, __LONG32 ExChange, __LONG32 Comperand) {
     return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedCompareExchange
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_InterlockedIncrement)
 __LONG32 _InterlockedIncrement(__LONG32 volatile *Addend);
+#if !__has_builtin(_InterlockedIncrement)
 __INTRINSICS_USEINLINE 
 __LONG32 _InterlockedIncrement(__LONG32 volatile *Addend) {
    return __sync_add_and_fetch(Addend, 1);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedIncrement
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_InterlockedDecrement)
 __LONG32 _InterlockedDecrement(__LONG32 volatile *Addend);
+#if !__has_builtin(_InterlockedDecrement)
 __INTRINSICS_USEINLINE 
 __LONG32 _InterlockedDecrement(__LONG32 volatile *Addend) {
    return __sync_sub_and_fetch(Addend, 1);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedDecrement
 #endif /* __INTRINSIC_PROLOG */
 
+#if __INTRINSIC_PROLOG(_InterlockedAdd)
+__LONG32 _InterlockedAdd(__LONG32 volatile *Addend, __LONG32 Value);
+__INTRINSICS_USEINLINE
+__LONG32 _InterlockedAdd(__LONG32 volatile *Addend, __LONG32 Value) {
+    return __sync_add_and_fetch(Addend, Value);
+}
+#define __INTRINSIC_DEFINED__InterlockedAdd
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_InterlockedAdd64)
+__MINGW_EXTENSION __int64 _InterlockedAdd64(__int64 volatile *Addend, __int64 Value);
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+__int64 _InterlockedAdd64(__int64 volatile *Addend, __int64 Value) {
+    return __sync_add_and_fetch(Addend, Value);
+}
+#define __INTRINSIC_DEFINED__InterlockedAdd64
+#endif /* __INTRINSIC_PROLOG */
+
 #if __INTRINSIC_PROLOG(_InterlockedExchange)
 __LONG32 _InterlockedExchange(__LONG32 volatile *Target, __LONG32 Value);
+#if !__has_builtin(_InterlockedExchange)
 __INTRINSICS_USEINLINE 
 __LONG32 _InterlockedExchange(__LONG32 volatile *Target, __LONG32 Value) {
     return __sync_lock_test_and_set(Target, Value);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedExchange
 #endif /* __INTRINSIC_PROLOG */
 
@@ -1036,19 +1103,23 @@
 
 #if __INTRINSIC_PROLOG(_InterlockedCompareExchangePointer)
 void *_InterlockedCompareExchangePointer(void * volatile *Destination, void *ExChange, void *Comperand);
+#if !__has_builtin(_InterlockedCompareExchangePointer)
 __INTRINSICS_USEINLINE 
 void *_InterlockedCompareExchangePointer(void *volatile *Destination, void *ExChange, void *Comperand) {
     return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedCompareExchangePointer
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_InterlockedExchangePointer)
 void *_InterlockedExchangePointer(void *volatile *Target,void *Value);
+#if !__has_builtin(_InterlockedExchangePointer)
 __INTRINSICS_USEINLINE 
 void *_InterlockedExchangePointer(void *volatile *Target,void *Value) {
     return __sync_lock_test_and_set(Target, Value);
 }
+#endif
 #define __INTRINSIC_DEFINED__InterlockedExchangePointer
 #endif /* __INTRINSIC_PROLOG */
 
@@ -1089,42 +1160,42 @@
 #if __INTRINSIC_PROLOG(_interlockedbittestandset)
 unsigned char _interlockedbittestandset(__LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(_interlockedbittestandset, __LONG32, "lock bts{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(_interlockedbittestandset, __LONG32, "lock bts{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED__interlockedbittestandset
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandreset)
 unsigned char _interlockedbittestandreset(__LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(_interlockedbittestandreset, __LONG32, "lock btr{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(_interlockedbittestandreset, __LONG32, "lock btr{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED__interlockedbittestandreset
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandcomplement)
 unsigned char _interlockedbittestandcomplement(__LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(_interlockedbittestandcomplement, __LONG32, "lock btc{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(_interlockedbittestandcomplement, __LONG32, "lock btc{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED__interlockedbittestandcomplement
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndSet)
 unsigned char InterlockedBitTestAndSet(volatile __LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(InterlockedBitTestAndSet, volatile __LONG32, "lock bts{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(InterlockedBitTestAndSet, volatile __LONG32, "lock bts{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndSet
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndReset)
 unsigned char InterlockedBitTestAndReset(volatile __LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(InterlockedBitTestAndReset, volatile __LONG32, "lock btr{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(InterlockedBitTestAndReset, volatile __LONG32, "lock btr{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndReset
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(InterlockedBitTestAndComplement)
 unsigned char InterlockedBitTestAndComplement(volatile __LONG32 *a, __LONG32 b);
 __INTRINSICS_USEINLINE
-__buildbittesti(InterlockedBitTestAndComplement, volatile __LONG32, "lock btc{l %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]", "I", __LONG32)
+__buildbittesti(InterlockedBitTestAndComplement, volatile __LONG32, "lock btc{l %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "I", __LONG32)
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement
 #endif /* __INTRINSIC_PROLOG */
 
@@ -1266,6 +1337,18 @@
 #define __INTRINSIC_DEFINED___cpuid
 #endif /* __INTRINSIC_PROLOG */
 
+#if __INTRINSIC_PROLOG(__cpuidex)
+void __cpuidex(int CPUInfo[4], int, int);
+__INTRINSICS_USEINLINE
+void __cpuidex(int CPUInfo[4], int function_id, int subfunction_id) {
+   __asm__ __volatile__ (
+      "cpuid"
+      : "=a" (CPUInfo [0]), "=b" (CPUInfo [1]), "=c" (CPUInfo [2]), "=d" (CPUInfo [3])
+      : "a" (function_id), "c" (subfunction_id));
+}
+#define __INTRINSIC_DEFINED___cpuidex
+#endif /* __INTRINSIC_PROLOG */
+
 #if __INTRINSIC_PROLOG(__readmsr)
 __MINGW_EXTENSION unsigned __int64 __readmsr(unsigned __LONG32);
 __INTRINSICS_USEINLINE
@@ -1322,6 +1405,28 @@
 #define __INTRINSIC_DEFINED___movsd
 #endif /* __INTRINSIC_PROLOG */
 
+/* NOTE: This should be in immintrin.h */
+#if __INTRINSIC_PROLOG(_xgetbv)
+unsigned __int64 _xgetbv(unsigned int);
+__INTRINSICS_USEINLINE
+unsigned __int64 _xgetbv(unsigned int index)
+{
+#if defined(__x86_64__) || defined(_AMD64_)
+   unsigned __int64 val1, val2;
+#else
+   unsigned __LONG32 val1, val2;
+#endif /* defined(__x86_64__) || defined(_AMD64_) */
+
+   __asm__ __volatile__(
+      "xgetbv"
+      : "=a" (val1), "=d" (val2)
+      : "c" (index));
+
+   return (((unsigned __int64)val2) << 32) | val1;
+}
+#define __INTRINSIC_DEFINED__xgetbv
+#endif /* __INTRINSIC_PROLOG */
+
 #endif /* defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_) */
 
 /* ***************************************************** */
@@ -1344,9 +1449,11 @@
 
 #if __INTRINSIC_PROLOG(__readfsdword)
 unsigned __LONG32 __readfsdword(unsigned __LONG32 Offset);
+#if !__has_builtin(__readfsdword)
 __INTRINSICS_USEINLINE
 __buildreadseg(__readfsdword, unsigned __LONG32, "fs", "l")
 #define __INTRINSIC_DEFINED___readfsdword
+#endif
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(__writefsbyte)
@@ -1443,5 +1550,11 @@
 #undef __INTRINSIC_PROLOG
 #undef __INTRINSIC_EPILOG
 #undef __INTRINSICS_USEINLINE
+#undef __FLAGCONSTRAINT
+#undef __FLAGSET
+#undef __FLAGCLOBBER1
+#undef __FLAGCLOBBER2
+
+#pragma pop_macro("__has_builtin")
 
 #endif /* __MINGW_INTRIN_INLINE */
diff --git a/x86_64-w64-mingw32/include/pthread.h b/x86_64-w64-mingw32/include/pthread.h
index f63d328..66810db 100644
--- a/x86_64-w64-mingw32/include/pthread.h
+++ b/x86_64-w64-mingw32/include/pthread.h
@@ -212,7 +212,7 @@
 
 /* Note that if async cancelling is used, then there is a race here */
 #define pthread_cleanup_pop(E)\
-    (*pthread_getclean() = _pthread_cup.next, (E?_pthread_cup.func((pthread_once_t *)_pthread_cup.arg):0));}
+    (*pthread_getclean() = _pthread_cup.next, ((E) ? (_pthread_cup.func((pthread_once_t *)_pthread_cup.arg)) : (void)0));}
 
 /* Windows doesn't have this, so declare it ourselves. */
 #ifndef _TIMESPEC_DEFINED
@@ -314,6 +314,9 @@
 int       WINPTHREAD_API pthread_create(pthread_t *th, const pthread_attr_t *attr, void *(* func)(void *), void *arg);
 int       WINPTHREAD_API pthread_join(pthread_t t, void **res);
 int       WINPTHREAD_API pthread_detach(pthread_t t);
+int       WINPTHREAD_API pthread_setname_np(pthread_t thread, const char *name);
+int       WINPTHREAD_API pthread_getname_np(pthread_t thread, char *name, size_t len);
+
 
 int WINPTHREAD_API pthread_rwlock_init(pthread_rwlock_t *rwlock_, const pthread_rwlockattr_t *attr);
 int WINPTHREAD_API pthread_rwlock_wrlock(pthread_rwlock_t *l);
diff --git a/x86_64-w64-mingw32/include/rasshost.h b/x86_64-w64-mingw32/include/rasshost.h
index 3cd3c3c..ea88a7b 100644
--- a/x86_64-w64-mingw32/include/rasshost.h
+++ b/x86_64-w64-mingw32/include/rasshost.h
@@ -5,8 +5,8 @@
 #ifndef _RASSHOST_
 #define _RASSHOST_
 
-#include <winapifamily.h>
-
+#include <winapifamily.h>

+

 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
 
 #include <mprapi.h>
diff --git a/x86_64-w64-mingw32/include/regbag.h b/x86_64-w64-mingw32/include/regbag.h
new file mode 100644
index 0000000..de32006
--- /dev/null
+++ b/x86_64-w64-mingw32/include/regbag.h
@@ -0,0 +1,147 @@
+/*** Autogenerated by WIDL 1.6 from include/regbag.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __regbag_h__
+#define __regbag_h__
+
+/* Forward declarations */
+
+#ifndef __ICreatePropBagOnRegKey_FWD_DEFINED__
+#define __ICreatePropBagOnRegKey_FWD_DEFINED__
+typedef interface ICreatePropBagOnRegKey ICreatePropBagOnRegKey;
+#endif
+
+/* Headers for imported files */
+
+#include <objidl.h>
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+/*****************************************************************************
+ * ICreatePropBagOnRegKey interface
+ */
+#ifndef __ICreatePropBagOnRegKey_INTERFACE_DEFINED__
+#define __ICreatePropBagOnRegKey_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreatePropBagOnRegKey, 0x8a674b48, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8a674b48-1f63-11d3-b64c-00c04f79498e")
+ICreatePropBagOnRegKey : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Create(
+        HKEY hkey,
+        LPCOLESTR subkey,
+        DWORD ulOptions,
+        DWORD samDesired,
+        REFIID iid,
+        LPVOID *ppBag) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ICreatePropBagOnRegKey, 0x8a674b48, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct ICreatePropBagOnRegKeyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreatePropBagOnRegKey* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreatePropBagOnRegKey* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreatePropBagOnRegKey* This);
+
+    /*** ICreatePropBagOnRegKey methods ***/
+    HRESULT (STDMETHODCALLTYPE *Create)(
+        ICreatePropBagOnRegKey* This,
+        HKEY hkey,
+        LPCOLESTR subkey,
+        DWORD ulOptions,
+        DWORD samDesired,
+        REFIID iid,
+        LPVOID *ppBag);
+
+    END_INTERFACE
+} ICreatePropBagOnRegKeyVtbl;
+interface ICreatePropBagOnRegKey {
+    CONST_VTBL ICreatePropBagOnRegKeyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ICreatePropBagOnRegKey_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreatePropBagOnRegKey_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreatePropBagOnRegKey_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreatePropBagOnRegKey methods ***/
+#define ICreatePropBagOnRegKey_Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag) (This)->lpVtbl->Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ICreatePropBagOnRegKey_QueryInterface(ICreatePropBagOnRegKey* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ICreatePropBagOnRegKey_AddRef(ICreatePropBagOnRegKey* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ICreatePropBagOnRegKey_Release(ICreatePropBagOnRegKey* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ICreatePropBagOnRegKey methods ***/
+static FORCEINLINE HRESULT ICreatePropBagOnRegKey_Create(ICreatePropBagOnRegKey* This,HKEY hkey,LPCOLESTR subkey,DWORD ulOptions,DWORD samDesired,REFIID iid,LPVOID *ppBag) {
+    return This->lpVtbl->Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreatePropBagOnRegKey_Create_Proxy(
+    ICreatePropBagOnRegKey* This,
+    HKEY hkey,
+    LPCOLESTR subkey,
+    DWORD ulOptions,
+    DWORD samDesired,
+    REFIID iid,
+    LPVOID *ppBag);
+void __RPC_STUB ICreatePropBagOnRegKey_Create_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ */
+
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __regbag_h__ */
diff --git a/x86_64-w64-mingw32/include/roapi.h b/x86_64-w64-mingw32/include/roapi.h
index d4146ba..14d94c3 100644
--- a/x86_64-w64-mingw32/include/roapi.h
+++ b/x86_64-w64-mingw32/include/roapi.h
@@ -13,8 +13,6 @@
 #include <inspectable.h>
 #include <activation.h>
 
-#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
-
 typedef enum RO_INIT_TYPE {
 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
   RO_INIT_SINGLETHREADED = 0,
@@ -26,7 +24,9 @@
 
 typedef HRESULT (WINAPI *PFNGETACTIVATIONFACTORY)(HSTRING, IActivationFactory **);
 
-/* */
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 HRESULT WINAPI RoActivateInstance(HSTRING activatableClassId, IInspectable **instance);
 
@@ -51,20 +51,22 @@
 
 HRESULT WINAPI RoGetApartmentIdentifier (UINT64 *apartmentId);
 
-#endif
-
 #ifdef __cplusplus
+} /* extern "C" */
 
 namespace Windows {
   namespace Foundation {
-    __inline HRESULT Initalize (RO_INIT_TYPE it
+    __inline HRESULT Initialize (RO_INIT_TYPE it
 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
-	 = 0
+	 = RO_INIT_SINGLETHREADED
 #endif
     ) { return RoInitialize (it); }
     __inline void Uninitialize ()
     { RoUninitialize (); }
 
+    template<class T> __inline HRESULT GetActivationFactory(HSTRING classid, T **factory) {
+      return RoGetActivationFactory(classid, IID_INS_ARGS(factory));
+    }
   }
 }
 
@@ -73,12 +75,16 @@
     namespace Foundation {
       __inline HRESULT Initialze (RO_INIT_TYPE it
 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
-	= 0
+	= RO_INIT_SINGLETHREADED
 #endif
       ) { return RoInitialize (it); }
       __inline void Uninitialize ()
       { RoUninitialize (); }
     }
+
+    template<class T> __inline HRESULT GetActivationFactory(HSTRING classid, T **factory) {
+      return RoGetActivationFactory(classid, IID_INS_ARGS(factory));
+    }
   }
 }
 
diff --git a/x86_64-w64-mingw32/include/sal.h b/x86_64-w64-mingw32/include/sal.h
index 9987119..5c200d4 100644
--- a/x86_64-w64-mingw32/include/sal.h
+++ b/x86_64-w64-mingw32/include/sal.h
@@ -17,11 +17,195 @@
 
 #define __checkReturn __inner_checkReturn
 
+/* Pointer parameters */
 #define _In_
-#define _In_opt_
 #define _Out_
+#define _Inout_
+#define _In_z_
+#define _Inout_z_
+#define _In_reads_(s)
+#define _In_reads_bytes_(s)
+#define _In_reads_z_(s)
+#define _In_reads_or_z_(s)
+#define _Out_writes_(s)
+#define _Out_writes_bytes_(s)
+#define _Out_writes_z_(s)
+#define _Inout_updates_(s)
+#define _Inout_updates_bytes_(s)
+#define _Inout_updates_z_(s)
+#define _Out_writes_to_(s,c)
+#define _Out_writes_bytes_to_(s, c)
+#define _Out_writes_all_(s)
+#define _Out_writes_bytes_all_(s)
+#define _Inout_updates_to_(s, c)
+#define _Inout_updates_bytes_to_(s, c)
+#define _Inout_updates_all_(s)
+#define _Inout_updates_bytes_all_(s)
+#define _In_reads_to_ptr_(p)
+#define _In_reads_to_ptr_z_(p)
+#define _Out_writes_to_ptr_(p)
+#define _Out_writes_to_ptr_z(p)
 
+/* Optional pointer parameters */
+#define _In_opt_
+#define _Out_opt_
+#define _Inout_opt_
+#define _In_opt_z_
+#define _Inout_opt_z_
+#define _In_reads_opt_(s)
+#define _In_reads_bytes_opt_(s)
+#define _In_reads_opt_z_(s)
+
+#define _Out_writes_opt_(s)
+#define _Out_writes_opt_z_(s)
+#define _Inout_updates_opt_(s)
+#define _Inout_updates_bytes_opt_(s)
+#define _Inout_updates_opt_z_(s)
+#define _Out_writes_to_opt_(s, c)
+#define _Out_writes_bytes_to_opt_(s, c)
+#define _Out_writes_all_opt_(s)
+#define _Out_writes_bytes_all_opt_(s)
+
+#define _Inout_updates_to_opt_(s, c)
+#define _Inout_updates_bytes_to_opt_(s, c)
+#define _Inout_updates_all_opt_(s)
+#define _Inout_updates_bytes_all_opt_(s)
+#define _In_reads_to_ptr_opt_(p)
+#define _In_reads_to_ptr_opt_z_(p)
+#define _Out_writes_to_ptr_opt_(p)
+#define _Out_writes_to_ptr_opt_z_(p)
+
+/* Output pointer parameters */
+#define _Outptr_
+#define _Outptr_opt_
+#define _Outptr_result_maybenull_
+#define _Outptr_opt_result_maybenull_
+#define _Outptr_result_z_
+#define _Outptr_opt_result_z_
+#define _Outptr_result_maybenull_z_
+#define _Outptr_opt_result_maybenull_z_
+#define _COM_Outptr_
+#define _COM_Outptr_opt_
+#define _COM_Outptr_result_maybenull_
+#define _COM_Outptr_opt_result_maybenull_
+#define _Outptr_result_buffer_(s)
+#define _Outptr_result_bytebuffer_(s)
+#define _Outptr_opt_result_buffer_(s)
+#define _Outptr_opt_result_bytebuffer_(s)
+#define _Outptr_result_buffer_to_(s, c)
+#define _Outptr_result_bytebuffer_to_(s, c)
+#define _Outptr_result_bytebuffer_maybenull_(s)
+#define _Outptr_opt_result_buffer_to_(s, c)
+#define _Outptr_opt_result_bytebuffer_to_(s, c)
+#define _Result_nullonfailure_
+#define _Result_zeroonfailure_
+#define _Outptr_result_nullonfailure_
+#define _Outptr_opt_result_nullonfailure_
+#define _Outref_result_nullonfailure_
+
+/* Output reference parameters */
+#define _Outref_
+#define _Outref_result_maybenull_
+#define _Outref_result_buffer_(s)
+#define _Outref_result_bytebuffer_(s)
+#define _Outref_result_buffer_to_(s, c)
+#define _Outref_result_bytebuffer_to_(s, c)
+#define _Outref_result_buffer_all_(s)
+#define _Outref_result_bytebuffer_all_(s)
+#define _Outref_result_buffer_maybenull_(s)
+#define _Outref_result_bytebuffer_maybenull_(s)
+#define _Outref_result_buffer_to_maybenull_(s, c)
+#define _Outref_result_bytebuffer_to_maybenull_(s, c)
+#define _Outref_result_buffer_all_maybenull_(s)
+#define _Outref_result_bytebuffer_all_maybenull_(s)
+
+/* Return values */
+#define _Ret_z_
+#define _Ret_writes_(s)
+#define _Ret_writes_bytes_(s)
+#define _Ret_writes_z_(s)
+#define _Ret_writes_bytes_to_(s, c)
+#define _Ret_writes_maybenull_(s)
+#define _Ret_writes_to_maybenull_(s, c)
+#define _Ret_writes_maybenull_z_(s)
+#define _Ret_maybenull_
+#define _Ret_maybenull_z_
+#define _Ret_null_
+#define _Ret_notnull_
+#define _Ret_writes_bytes_to_(s, c)
+#define _Ret_writes_bytes_maybenull_(s)
+#define _Ret_writes_bytes_to_maybenull_(s, c)
+
+/* Other common annotations */
+#define _In_range_(low, hi)
+#define _Out_range_(low, hi)
+#define _Ret_range_(low, hi)
+#define _Deref_in_range_(low, hi)
+#define _Deref_out_range_(low, hi)
+#define _Deref_inout_range_(low, hi)
+#define _Pre_equal_to_(expr)
+#define _Post_equal_to_(expr)
 #define _Struct_size_bytes_(size)
 
+/* Function annotations */
+#define _Called_from_function_class_(name)
+#define _Check_return_ __checkReturn
+#define _Function_class_(name)
+#define _Raises_SEH_exception_
+#define _Maybe_raises_SEH_exception_
+#define _Must_inspect_result_
+#define _Use_decl_annotations_
+
+/* Success/failure annotations */
+#define _Always_(anno_list)
+#define _On_failure_(anno_list)
+#define _Return_type_success_(expr)
+#define _Success_(expr)
+
+#define _Reserved_
+#define _Const_
+
+/* Buffer properties */
+#define _Readable_bytes_(s)
+#define _Readable_elements_(s)
+#define _Writable_bytes_(s)
+#define _Writable_elements_(s)
+#define _Null_terminated_
+#define _NullNull_terminated_
+#define _Pre_readable_size_(s)
+#define _Pre_writable_size_(s)
+#define _Pre_readable_byte_size_(s)
+#define _Pre_writable_byte_size_(s)
+#define _Post_readable_size_(s)
+#define _Post_writable_size_(s)
+#define _Post_readable_byte_size_(s)
+#define _Post_writable_byte_size_(s)
+
+/* Field properties */
+#define _Field_size_(s)
+#define _Field_size_full_(s)
+#define _Field_size_full_opt_(s)
+#define _Field_size_opt_(s)
+#define _Field_size_part_(s, c)
+#define _Field_size_part_opt_(s, c)
+#define _Field_size_bytes_(size)
+#define _Field_size_bytes_full_(size)
+#define _Field_size_bytes_full_opt_(s)
+#define _Field_size_bytes_opt_(s)
+#define _Field_size_bytes_part_(s, c)
+#define _Field_size_bytes_part_opt_(s, c)
+#define _Field_z_
+#define _Field_range_(min, max)
+
+/* Structural annotations */
+#define _At_(e, a)
+#define _At_buffer_(e, i, c, a)
+#define _Group_(a)
+#define _When_(e, a)
+
+/* Analysis */
+#define _Analysis_assume_(expr)
+#define _Analysis_assume_nullterminated_(expr)
+
 #endif
 
diff --git a/x86_64-w64-mingw32/include/sapi.h b/x86_64-w64-mingw32/include/sapi.h
index 56edb84..865035e 100644
--- a/x86_64-w64-mingw32/include/sapi.h
+++ b/x86_64-w64-mingw32/include/sapi.h
@@ -40,7 +40,7 @@
 #define SPCAT_RECOPROFILES L"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\RecoProfiles"
 
 #define SPMMSYS_AUDIO_IN_TOKEN_ID L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput\\TokenEnums\\MMAudioIn\\"
-#define SPMMSYS_AUDIO_OUT_TOKEN_ID L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput\\TokenEnums\\MMAudioOut\\\"
+#define SPMMSYS_AUDIO_OUT_TOKEN_ID L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput\\TokenEnums\\MMAudioOut\\"
 #define SPCURRENT_USER_LEXICON_TOKEN_ID L"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserLexicon"
 
 #define SPTOKENVALUE_CLSID L"CLSID"
diff --git a/x86_64-w64-mingw32/include/sapi51.h b/x86_64-w64-mingw32/include/sapi51.h
index e55c2f5..e3ffbff 100644
--- a/x86_64-w64-mingw32/include/sapi51.h
+++ b/x86_64-w64-mingw32/include/sapi51.h
@@ -10115,7 +10115,7 @@
         ISpeechObjectTokenCategory **Category) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDescription(
-        LONG Locale = 0,
+        LONG Locale,
         BSTR *Description) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetId(
@@ -10128,8 +10128,8 @@
         BSTR *AttributeValue) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateInstance(
-        IUnknown *pUnkOuter = 0,
-        SpeechTokenContext ClsContext = STCAll,
+        IUnknown *pUnkOuter,
+        SpeechTokenContext ClsContext,
         IUnknown **Object) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Remove(
@@ -10149,8 +10149,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
-        IUnknown *Object = 0,
+        const VARIANT *ExtraData,
+        IUnknown *Object,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -10712,12 +10712,12 @@
         VARIANT_BOOL CreateIfNotExist = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDataKey(
-        SpeechDataKeyLocation Location = SDKLDefaultLocation,
+        SpeechDataKeyLocation Location,
         ISpeechDataKey **DataKey) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumerateTokens(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **Tokens) = 0;
 
 };
@@ -11401,7 +11401,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE Seek(
         VARIANT Position,
-        SpeechStreamSeekPositionType Origin = SSSPTRelativeToStart,
+        SpeechStreamSeekPositionType Origin,
         VARIANT *NewPosition) = 0;
 
 };
@@ -13750,12 +13750,12 @@
 
     virtual HRESULT STDMETHODCALLTYPE Speak(
         BSTR Text,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakStream(
         ISpeechBaseStream *Stream,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Pause(
@@ -13770,13 +13770,13 @@
         LONG *NumSkipped) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetVoices(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioOutputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE WaitUntilDone(
@@ -13788,7 +13788,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -15445,7 +15445,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -15455,18 +15455,18 @@
         const VARIANT *ExtraData = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetRecognizers(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioInputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetProfiles(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
 };
@@ -16333,7 +16333,7 @@
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateGrammar(
-        VARIANT GrammarId = 0,
+        VARIANT GrammarId,
         ISpeechRecoGrammar **Grammar) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateResultFromMemory(
@@ -17764,7 +17764,7 @@
     virtual HRESULT STDMETHODCALLTYPE Add(
         BSTR RuleName,
         SpeechRuleAttributes Attributes,
-        LONG RuleId = 0,
+        LONG RuleId,
         ISpeechGrammarRule **Rule) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Commit(
@@ -19004,19 +19004,19 @@
 
     virtual HRESULT STDMETHODCALLTYPE Alternates(
         LONG RequestCount,
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechPhraseAlternates **Alternates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Audio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechMemoryStream **Stream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        LONG StartElement,
+        LONG Elements,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
@@ -20060,15 +20060,15 @@
         VARIANT *PhraseBlock) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetText(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         BSTR *Text) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDisplayAttributes(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         SpeechDisplayAttributes *DisplayAttributes) = 0;
 
 };
@@ -22419,8 +22419,8 @@
         LONG *GenerationId) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetWords(
-        SpeechLexiconType Flags = eLEXTYPE_USER | eLEXTYPE_APP,
-        LONG *GenerationID = 0,
+        SpeechLexiconType Flags,
+        LONG *GenerationID,
         ISpeechLexiconWords **Words) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE AddPronunciation(
@@ -22449,8 +22449,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE GetPronunciations(
         BSTR bstrWord,
-        SpeechLanguageId LangId = 0,
-        SpeechLexiconType TypeFlags = eLEXTYPE_USER | eLEXTYPE_APP,
+        SpeechLanguageId LangId,
+        SpeechLexiconType TypeFlags,
         ISpeechLexiconPronunciations **ppPronunciations) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetGenerationChange(
diff --git a/x86_64-w64-mingw32/include/sapi53.h b/x86_64-w64-mingw32/include/sapi53.h
index 5c6f1c2..1abbd5a 100644
--- a/x86_64-w64-mingw32/include/sapi53.h
+++ b/x86_64-w64-mingw32/include/sapi53.h
@@ -12968,7 +12968,7 @@
         ISpeechObjectTokenCategory **Category) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDescription(
-        LONG Locale = 0,
+        LONG Locale,
         BSTR *Description) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetId(
@@ -12981,8 +12981,8 @@
         BSTR *AttributeValue) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateInstance(
-        IUnknown *pUnkOuter = 0,
-        SpeechTokenContext ClsContext = STCAll,
+        IUnknown *pUnkOuter,
+        SpeechTokenContext ClsContext,
         IUnknown **Object) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Remove(
@@ -13002,8 +13002,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
-        IUnknown *Object = 0,
+        const VARIANT *ExtraData,
+        IUnknown *Object,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -13565,12 +13565,12 @@
         VARIANT_BOOL CreateIfNotExist = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDataKey(
-        SpeechDataKeyLocation Location = SDKLDefaultLocation,
+        SpeechDataKeyLocation Location,
         ISpeechDataKey **DataKey) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumerateTokens(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **Tokens) = 0;
 
 };
@@ -14258,7 +14258,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE Seek(
         VARIANT Position,
-        SpeechStreamSeekPositionType Origin = SSSPTRelativeToStart,
+        SpeechStreamSeekPositionType Origin,
         VARIANT *NewPosition) = 0;
 
 };
@@ -16607,12 +16607,12 @@
 
     virtual HRESULT STDMETHODCALLTYPE Speak(
         BSTR Text,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakStream(
         ISpeechBaseStream *Stream,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Pause(
@@ -16627,13 +16627,13 @@
         LONG *NumSkipped) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetVoices(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioOutputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE WaitUntilDone(
@@ -16645,7 +16645,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -18325,7 +18325,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -18335,18 +18335,18 @@
         const VARIANT *ExtraData = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetRecognizers(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioInputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetProfiles(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
 };
@@ -19213,7 +19213,7 @@
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateGrammar(
-        VARIANT GrammarId = 0,
+        VARIANT GrammarId,
         ISpeechRecoGrammar **Grammar) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateResultFromMemory(
@@ -20644,7 +20644,7 @@
     virtual HRESULT STDMETHODCALLTYPE Add(
         BSTR RuleName,
         SpeechRuleAttributes Attributes,
-        LONG RuleId = 0,
+        LONG RuleId,
         ISpeechGrammarRule **Rule) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Commit(
@@ -21884,19 +21884,19 @@
 
     virtual HRESULT STDMETHODCALLTYPE Alternates(
         LONG RequestCount,
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechPhraseAlternates **Alternates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Audio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechMemoryStream **Stream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        LONG StartElement,
+        LONG Elements,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
@@ -22697,19 +22697,19 @@
 
     virtual HRESULT STDMETHODCALLTYPE Alternates(
         LONG RequestCount,
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechPhraseAlternates **Alternates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Audio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechMemoryStream **Stream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        LONG StartElement,
+        LONG Elements,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
@@ -23831,15 +23831,15 @@
         VARIANT *PhraseBlock) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetText(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         BSTR *Text) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDisplayAttributes(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         SpeechDisplayAttributes *DisplayAttributes) = 0;
 
 };
@@ -26190,8 +26190,8 @@
         LONG *GenerationId) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetWords(
-        SpeechLexiconType Flags = eLEXTYPE_USER | eLEXTYPE_APP,
-        LONG *GenerationID = 0,
+        SpeechLexiconType Flags,
+        LONG *GenerationID,
         ISpeechLexiconWords **Words) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE AddPronunciation(
@@ -26220,8 +26220,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE GetPronunciations(
         BSTR bstrWord,
-        SpeechLanguageId LangId = 0,
-        SpeechLexiconType TypeFlags = eLEXTYPE_USER | eLEXTYPE_APP,
+        SpeechLanguageId LangId,
+        SpeechLexiconType TypeFlags,
         ISpeechLexiconPronunciations **ppPronunciations) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetGenerationChange(
diff --git a/x86_64-w64-mingw32/include/sapi54.h b/x86_64-w64-mingw32/include/sapi54.h
index 75183b1..fa79ca6 100644
--- a/x86_64-w64-mingw32/include/sapi54.h
+++ b/x86_64-w64-mingw32/include/sapi54.h
@@ -13228,7 +13228,7 @@
         ISpeechObjectTokenCategory **Category) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDescription(
-        LONG Locale = 0,
+        LONG Locale,
         BSTR *Description) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetId(
@@ -13241,8 +13241,8 @@
         BSTR *AttributeValue) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateInstance(
-        IUnknown *pUnkOuter = 0,
-        SpeechTokenContext ClsContext = STCAll,
+        IUnknown *pUnkOuter,
+        SpeechTokenContext ClsContext,
         IUnknown **Object) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Remove(
@@ -13262,8 +13262,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
-        IUnknown *Object = 0,
+        const VARIANT *ExtraData,
+        IUnknown *Object,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -13825,12 +13825,12 @@
         VARIANT_BOOL CreateIfNotExist = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDataKey(
-        SpeechDataKeyLocation Location = SDKLDefaultLocation,
+        SpeechDataKeyLocation Location,
         ISpeechDataKey **DataKey) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EnumerateTokens(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **Tokens) = 0;
 
 };
@@ -14518,7 +14518,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE Seek(
         VARIANT Position,
-        SpeechStreamSeekPositionType Origin = SSSPTRelativeToStart,
+        SpeechStreamSeekPositionType Origin,
         VARIANT *NewPosition) = 0;
 
 };
@@ -16867,12 +16867,12 @@
 
     virtual HRESULT STDMETHODCALLTYPE Speak(
         BSTR Text,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakStream(
         ISpeechBaseStream *Stream,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Pause(
@@ -16887,13 +16887,13 @@
         LONG *NumSkipped) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetVoices(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioOutputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE WaitUntilDone(
@@ -16905,7 +16905,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -18585,7 +18585,7 @@
 
     virtual HRESULT STDMETHODCALLTYPE IsUISupported(
         const BSTR TypeOfUI,
-        const VARIANT *ExtraData = 0,
+        const VARIANT *ExtraData,
         VARIANT_BOOL *Supported) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE DisplayUI(
@@ -18595,18 +18595,18 @@
         const VARIANT *ExtraData = 0) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetRecognizers(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetAudioInputs(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetProfiles(
-        BSTR RequiredAttributes = L"",
-        BSTR OptionalAttributes = L"",
+        BSTR RequiredAttributes,
+        BSTR OptionalAttributes,
         ISpeechObjectTokens **ObjectTokens) = 0;
 
 };
@@ -19473,7 +19473,7 @@
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateGrammar(
-        VARIANT GrammarId = 0,
+        VARIANT GrammarId,
         ISpeechRecoGrammar **Grammar) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateResultFromMemory(
@@ -20904,7 +20904,7 @@
     virtual HRESULT STDMETHODCALLTYPE Add(
         BSTR RuleName,
         SpeechRuleAttributes Attributes,
-        LONG RuleId = 0,
+        LONG RuleId,
         ISpeechGrammarRule **Rule) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Commit(
@@ -22144,19 +22144,19 @@
 
     virtual HRESULT STDMETHODCALLTYPE Alternates(
         LONG RequestCount,
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechPhraseAlternates **Alternates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Audio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechMemoryStream **Stream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        LONG StartElement,
+        LONG Elements,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
@@ -22957,19 +22957,19 @@
 
     virtual HRESULT STDMETHODCALLTYPE Alternates(
         LONG RequestCount,
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechPhraseAlternates **Alternates) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Audio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
+        LONG StartElement,
+        LONG Elements,
         ISpeechMemoryStream **Stream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
+        LONG StartElement,
+        LONG Elements,
+        SpeechVoiceSpeakFlags Flags,
         LONG *StreamNumber) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
@@ -24091,15 +24091,15 @@
         VARIANT *PhraseBlock) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetText(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         BSTR *Text) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetDisplayAttributes(
-        LONG StartElement = 0,
-        LONG Elements = SPPR_ALL_ELEMENTS,
-        VARIANT_BOOL UseReplacements = -1,
+        LONG StartElement,
+        LONG Elements,
+        VARIANT_BOOL UseReplacements,
         SpeechDisplayAttributes *DisplayAttributes) = 0;
 
 };
@@ -26450,8 +26450,8 @@
         LONG *GenerationId) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetWords(
-        SpeechLexiconType Flags = eLEXTYPE_USER | eLEXTYPE_APP,
-        LONG *GenerationID = 0,
+        SpeechLexiconType Flags,
+        LONG *GenerationID,
         ISpeechLexiconWords **Words) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE AddPronunciation(
@@ -26480,8 +26480,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE GetPronunciations(
         BSTR bstrWord,
-        SpeechLanguageId LangId = 0,
-        SpeechLexiconType TypeFlags = eLEXTYPE_USER | eLEXTYPE_APP,
+        SpeechLanguageId LangId,
+        SpeechLexiconType TypeFlags,
         ISpeechLexiconPronunciations **ppPronunciations) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetGenerationChange(
diff --git a/x86_64-w64-mingw32/include/sdkddkver.h b/x86_64-w64-mingw32/include/sdkddkver.h
index 0433811..1b965ae 100644
--- a/x86_64-w64-mingw32/include/sdkddkver.h
+++ b/x86_64-w64-mingw32/include/sdkddkver.h
@@ -21,6 +21,7 @@
 #define _WIN32_WINNT_LONGHORN		0x0600
 #define _WIN32_WINNT_WIN7		0x0601
 #define _WIN32_WINNT_WIN8		0x0602
+#define _WIN32_WINNT_WINBLUE            0x0603
 
 /* _WIN32_IE */
 #define _WIN32_IE_IE20			0x0200
@@ -64,6 +65,7 @@
 #define _WIN32_IE_LONGHORN		_WIN32_IE_IE70
 #define _WIN32_IE_WIN7			_WIN32_IE_IE80
 #define _WIN32_IE_WIN8                  _WIN32_IE_IE100
+#define _WIN32_IE_WINBLUE               _WIN32_IE_IE100
 
 /* NTDDI_VERSION */
 #ifndef NTDDI_WIN2K
@@ -124,6 +126,7 @@
 
 #define NTDDI_WIN7			0x06010000
 #define NTDDI_WIN8                      0x06020000
+#define NTDDI_WINBLUE                   0x06030000
 
 /* Version Fields in NTDDI_VERSION */
 #define OSVERSION_MASK			0xFFFF0000U
diff --git a/x86_64-w64-mingw32/include/sec_api/conio_s.h b/x86_64-w64-mingw32/include/sec_api/conio_s.h
index 996d53a..95703eb 100644
--- a/x86_64-w64-mingw32/include/sec_api/conio_s.h
+++ b/x86_64-w64-mingw32/include/sec_api/conio_s.h
@@ -25,8 +25,8 @@
   _CRTIMP int __cdecl _cprintf_s_l (const char *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _vcprintf_s_l (const char *_Format,_locale_t _Locale,va_list _ArgList);
 
-#ifndef _WCONIO_DEFINED_S
-#define _WCONIO_DEFINED_S
+#ifndef _WCONIO_S_DEFINED
+#define _WCONIO_S_DEFINED
   _CRTIMP errno_t __cdecl _cgetws_s (wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _cgetws_s, wchar_t, _Buffer, size_t*, _SizeRead)
 
diff --git a/x86_64-w64-mingw32/include/sec_api/stdio_s.h b/x86_64-w64-mingw32/include/sec_api/stdio_s.h
index 8da6ddf..aa51af7 100644
--- a/x86_64-w64-mingw32/include/sec_api/stdio_s.h
+++ b/x86_64-w64-mingw32/include/sec_api/stdio_s.h
@@ -29,6 +29,7 @@
   _CRTIMP int __cdecl _fscanf_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _sscanf_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _sscanf_s_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl sscanf_s(const char *_Src,const char *_Format,...);
   _CRTIMP int __cdecl _snscanf_s(const char *_Src,size_t _MaxCount,const char *_Format,...);
   _CRTIMP int __cdecl _snscanf_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _snscanf_s_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
@@ -87,6 +88,7 @@
   _CRTIMP int __cdecl _vsnprintf_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
   _CRTIMP int __cdecl _vsnprintf_c_l(char *_DstBuf,size_t _MaxCount,const char *,_locale_t _Locale,va_list _ArgList);
   _CRTIMP errno_t __cdecl fopen_s(FILE **_File,const char *_Filename,const char *_Mode);
+  _CRTIMP errno_t __cdecl freopen_s(FILE** _File, const char *_Filename, const char *_Mode, FILE *_Stream);
 
   _CRTIMP char* __cdecl gets_s(char*,rsize_t);
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(char*,get_s,char,_DstBuf)
@@ -115,7 +117,7 @@
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format,va_list,_ArgList)
 
   _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
-  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const char*,_Format)
+  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format)
 
 
   _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
@@ -128,6 +130,7 @@
   _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
   _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t *_Format,...);
   _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
   _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
diff --git a/x86_64-w64-mingw32/include/sec_api/string_s.h b/x86_64-w64-mingw32/include/sec_api/string_s.h
index 1eac92e..7d36d91 100644
--- a/x86_64-w64-mingw32/include/sec_api/string_s.h
+++ b/x86_64-w64-mingw32/include/sec_api/string_s.h
@@ -65,11 +65,6 @@
   }
 #endif
 
-#ifndef _MEMORY_S_DEFINED
-#define _MEMORY_S_DEFINED
-  _CRTIMP errno_t __cdecl memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
-#endif /*_MEMORY_S_DEFINED*/
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/x86_64-w64-mingw32/include/sec_api/wchar_s.h b/x86_64-w64-mingw32/include/sec_api/wchar_s.h
index 42dd4ae..fe09632 100644
--- a/x86_64-w64-mingw32/include/sec_api/wchar_s.h
+++ b/x86_64-w64-mingw32/include/sec_api/wchar_s.h
@@ -49,7 +49,7 @@
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format,va_list,_ArgList)
 
   _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
-  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const char*,_Format)
+  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format)
 
   _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
@@ -61,6 +61,7 @@
   _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
   _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t *_Format,...);
   _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
   _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
   _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
diff --git a/x86_64-w64-mingw32/include/shobjidl.h b/x86_64-w64-mingw32/include/shobjidl.h
index b6f19e7..b0ea2e9 100644
--- a/x86_64-w64-mingw32/include/shobjidl.h
+++ b/x86_64-w64-mingw32/include/shobjidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/shobjidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/shobjidl.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/specstrings.h b/x86_64-w64-mingw32/include/specstrings.h
index ed0275f..485b433 100644
--- a/x86_64-w64-mingw32/include/specstrings.h
+++ b/x86_64-w64-mingw32/include/specstrings.h
@@ -279,6 +279,8 @@
 #define SAL__control_entrypoint(category)
 #define SAL__data_entrypoint(category)
 
+#define __encoded_pointer
+
 #ifndef __fallthrough
 #define __fallthrough
 #endif
diff --git a/x86_64-w64-mingw32/include/sperror.h b/x86_64-w64-mingw32/include/sperror.h
new file mode 100644
index 0000000..6376a60
--- /dev/null
+++ b/x86_64-w64-mingw32/include/sperror.h
@@ -0,0 +1,26 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef SPError_h
+#define SPError_h
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <winerror.h>
+
+#define FACILITY_SAPI FACILITY_ITF
+#define SAPI_ERROR_BASE 0x5000
+
+#define MAKE_SAPI_HRESULT(sev, err) MAKE_HRESULT(sev, FACILITY_SAPI, err)
+#define MAKE_SAPI_ERROR(err)        MAKE_SAPI_HRESULT(SEVERITY_ERROR, err+SAPI_ERROR_BASE)
+#define MAKE_SAPI_SCODE(scode)      MAKE_SAPI_HRESULT(SEVERITY_SUCCESS, scode+SAPI_ERROR_BASE)
+
+#define SPERR_NOT_FOUND MAKE_SAPI_ERROR(0x003a)
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/sphelper.h b/x86_64-w64-mingw32/include/sphelper.h
new file mode 100644
index 0000000..83248d9
--- /dev/null
+++ b/x86_64-w64-mingw32/include/sphelper.h
@@ -0,0 +1,78 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef SPHelper_h
+#define SPHelper_h
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <malloc.h>
+#include <sapi.h>
+/* #include <sapiddk.h> */
+#include <sperror.h>
+#include <limits.h>
+#include <mmsystem.h>
+#include <comcat.h>
+#include <mmreg.h>
+/* #include <atlbase.h> */
+#include <wchar.h>
+#include <tchar.h>
+#include <strsafe.h>
+#include <intsafe.h>
+
+inline HRESULT SpGetCategoryFromId(const WCHAR *category_id, ISpObjectTokenCategory **ret, BOOL fCreateIfNotExist = FALSE) {
+    ISpObjectTokenCategory *obj_token_cat;
+    HRESULT hres;
+
+    hres = ::CoCreateInstance(CLSID_SpObjectTokenCategory, NULL, CLSCTX_ALL, __uuidof(ISpObjectTokenCategory),
+            (void**)&obj_token_cat);
+    if(FAILED(hres))
+        return hres;
+
+    hres = obj_token_cat->SetId(category_id, fCreateIfNotExist);
+    if(FAILED(hres)) {
+        obj_token_cat->Release();
+        return hres;
+    }
+
+    *ret = obj_token_cat;
+    return S_OK;
+}
+
+inline HRESULT SpEnumTokens(const WCHAR *category_id, const WCHAR *req_attrs, const WCHAR *opt_attrs, IEnumSpObjectTokens **ret) {
+    ISpObjectTokenCategory *category;
+    HRESULT hres;
+
+    hres = SpGetCategoryFromId(category_id, &category);
+    if(SUCCEEDED(hres)) {
+        hres = category->EnumTokens(req_attrs, opt_attrs, ret);
+        category->Release();
+    }
+
+    return hres;
+}
+
+/* str must be at least 9 chars (8 for 32-bit integer in hex + one for '\0').  */
+inline void SpHexFromUlong(WCHAR *str, ULONG ul) {
+    ::_ultow(ul, str, 16);
+}
+
+inline HRESULT SpGetDescription(ISpObjectToken *obj_token, WCHAR **description, LANGID language = GetUserDefaultUILanguage()) {
+    WCHAR lang_id[9];
+    HRESULT hres;
+
+    SpHexFromUlong(lang_id, language);
+    hres = obj_token->GetStringValue(lang_id, description);
+    if(hres == SPERR_NOT_FOUND)
+        hres = obj_token->GetStringValue(NULL, description);
+
+    return hres;
+}
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/stdio.h b/x86_64-w64-mingw32/include/stdio.h
index 3b49ddd..9f1cfff 100644
--- a/x86_64-w64-mingw32/include/stdio.h
+++ b/x86_64-w64-mingw32/include/stdio.h
@@ -374,41 +374,53 @@
 /*
  * Default configuration: simply direct all calls to MSVCRT...
  */
+  __attribute__((__format__ (ms_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
+  __attribute__((__format__ (ms_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
   int __cdecl printf(const char * __restrict__ _Format,...);
+  __attribute__((__format__ (ms_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl sprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 
+  __attribute__((__format__ (ms_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl vfprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list _ArgList);
+  __attribute__((__format__ (ms_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
   int __cdecl vprintf(const char * __restrict__ _Format,va_list _ArgList);
+  __attribute__((__format__ (ms_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl vsprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 
+  __attribute__((__format__ (ms_scanf, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  __attribute__((__format__ (ms_scanf, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
   int __cdecl scanf(const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  __attribute__((__format__ (ms_scanf, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 #ifdef _GNU_SOURCE
   int __cdecl vasprintf(char ** __restrict__ ret,const char * __restrict__ format,va_list ap)  __attribute__ ((format (__MINGW_PRINTF_FORMAT, 2, 0)));;
   int __cdecl asprintf(char ** __restrict__ ret,const char * __restrict__ format,...) __attribute__ ((format (__MINGW_PRINTF_FORMAT, 2, 3)));
 #endif /*_GNU_SOURCE*/
 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+  __attribute__((__format__ (ms_scanf, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
   int __cdecl __ms_vscanf(const char * __restrict__ Format, va_list argp);
+  __attribute__((__format__ (ms_scanf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl __ms_vfscanf (FILE * __restrict__ fp, const char * __restrict__ Format,va_list argp);
+  __attribute__((__format__ (ms_scanf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int __cdecl __ms_vsscanf (const char * __restrict__ _Str,const char * __restrict__ Format,va_list argp);
 
   __mingw_ovr
-  __MINGW_ATTRIB_NONNULL(2)
+  __attribute__((__format__ (ms_scanf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int vfscanf (FILE *__stream,  const char *__format, __builtin_va_list __local_argv)
   {
     return __ms_vfscanf (__stream, __format, __local_argv);
   }
 
   __mingw_ovr
-  __MINGW_ATTRIB_NONNULL(2)
+  __attribute__((__format__ (ms_scanf, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
   int vsscanf (const char * __restrict__ __source, const char * __restrict__ __format, __builtin_va_list __local_argv)
   {
     return __ms_vsscanf( __source, __format, __local_argv );
   }
   __mingw_ovr
-  __MINGW_ATTRIB_NONNULL(1)
+  __attribute__((__format__ (ms_scanf, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
   int vscanf(const char *__format,  __builtin_va_list __local_argv)
   {
     return __ms_vscanf (__format, __local_argv);
@@ -525,7 +537,9 @@
   char *__cdecl tmpnam(char *_Buffer);
   int __cdecl ungetc(int _Ch,FILE *_File);
 
+  __attribute__((__format__ (ms_printf, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
   _CRTIMP int __cdecl _snprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  __attribute__((__format__ (ms_printf, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
   _CRTIMP int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 
 #if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0
@@ -535,21 +549,23 @@
 #pragma push_macro("vsnprintf")
 # undef snprintf
 # undef vsnprintf
+  __attribute__((__format__ (ms_printf, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
   int __cdecl __ms_vsnprintf(char * __restrict__ d,size_t n,const char * __restrict__ format,va_list arg)
     __MINGW_ATTRIB_DEPRECATED_MSVC2005 __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 
   __mingw_ovr
-  __MINGW_ATTRIB_NONNULL(3)
+  __attribute__((__format__ (ms_printf, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
   int vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv)
   {
     return __ms_vsnprintf (__stream, __n, __format, __local_argv);
   }
 
+  __attribute__((__format__ (ms_printf, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
   int __cdecl __ms_snprintf(char * __restrict__ s, size_t n, const char * __restrict__  format, ...);
 
 #ifndef __NO_ISOCEXT
 __mingw_ovr
-__MINGW_ATTRIB_NONNULL(3)
+__attribute__((__format__ (ms_printf, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
 int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...)
 {
   register int __retval;
diff --git a/x86_64-w64-mingw32/include/string.h b/x86_64-w64-mingw32/include/string.h
index 16831e3..84c8d71 100644
--- a/x86_64-w64-mingw32/include/string.h
+++ b/x86_64-w64-mingw32/include/string.h
@@ -39,6 +39,7 @@
   _CRTIMP int __cdecl _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale);
   int __cdecl memcmp(const void *_Buf1,const void *_Buf2,size_t _Size);
   void * __cdecl memcpy(void * __restrict__ _Dst,const void * __restrict__ _Src,size_t _Size) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
+  _CRTIMP errno_t __cdecl memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
   void * __cdecl mempcpy (void *_Dst, const void *_Src, size_t _Size);
   void * __cdecl memset(void *_Dst,int _Val,size_t _Size);
 #ifndef	NO_OLDNAMES
diff --git a/x86_64-w64-mingw32/include/strmif.h b/x86_64-w64-mingw32/include/strmif.h
index 9c3e7ed..716342b 100644
--- a/x86_64-w64-mingw32/include/strmif.h
+++ b/x86_64-w64-mingw32/include/strmif.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/strmif.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/strmif.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -292,6 +292,11 @@
 typedef interface IAMGraphBuilderCallback IAMGraphBuilderCallback;
 #endif
 
+#ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__
+#define __IAMVfwCaptureDialogs_FWD_DEFINED__
+typedef interface IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
+#endif
+
 /* Headers for imported files */
 
 #include <unknwn.h>
@@ -4543,10 +4548,51 @@
 typedef interface ISeekingPassThru ISeekingPassThru;
 #endif
 
+typedef enum tagAnalogVideoStandard {
+    AnalogVideo_None = 0x0,
+    AnalogVideo_NTSC_M = 0x1,
+    AnalogVideo_NTSC_M_J = 0x2,
+    AnalogVideo_NTSC_433 = 0x4,
+    AnalogVideo_PAL_B = 0x10,
+    AnalogVideo_PAL_D = 0x20,
+    AnalogVideo_PAL_G = 0x40,
+    AnalogVideo_PAL_H = 0x80,
+    AnalogVideo_PAL_I = 0x100,
+    AnalogVideo_PAL_M = 0x200,
+    AnalogVideo_PAL_N = 0x400,
+    AnalogVideo_PAL_60 = 0x800,
+    AnalogVideo_SECAM_B = 0x1000,
+    AnalogVideo_SECAM_D = 0x2000,
+    AnalogVideo_SECAM_G = 0x4000,
+    AnalogVideo_SECAM_H = 0x8000,
+    AnalogVideo_SECAM_K = 0x10000,
+    AnalogVideo_SECAM_K1 = 0x20000,
+    AnalogVideo_SECAM_L = 0x40000,
+    AnalogVideo_SECAM_L1 = 0x80000,
+    AnalogVideo_PAL_N_COMBO = 0x100000,
+    AnalogVideoMask_MCE_NTSC = (((((AnalogVideo_NTSC_M | AnalogVideo_NTSC_M_J) | AnalogVideo_NTSC_433) | AnalogVideo_PAL_M) | AnalogVideo_PAL_N) | AnalogVideo_PAL_60) | AnalogVideo_PAL_N_COMBO,
+    AnalogVideoMask_MCE_PAL = (((AnalogVideo_PAL_B | AnalogVideo_PAL_D) | AnalogVideo_PAL_G) | AnalogVideo_PAL_H) | AnalogVideo_PAL_I,
+    AnalogVideoMask_MCE_SECAM = ((((((AnalogVideo_SECAM_B | AnalogVideo_SECAM_D) | AnalogVideo_SECAM_G) | AnalogVideo_SECAM_H) | AnalogVideo_SECAM_K) | AnalogVideo_SECAM_K1) | AnalogVideo_SECAM_L) | AnalogVideo_SECAM_L1
+} AnalogVideoStandard;
+typedef enum tagTunerInputType {
+    TunerInputCable = 0,
+    TunerInputAntenna = 1
+} TunerInputType;
 typedef struct __WIDL_strmif_generated_name_00000002 {
     CLSID Clsid;
     LPWSTR Name;
 } REGFILTER;
+typedef enum tagTVAudioMode {
+    AMTVAUDIO_MODE_MONO = 0x1,
+    AMTVAUDIO_MODE_STEREO = 0x2,
+    AMTVAUDIO_MODE_LANG_A = 0x10,
+    AMTVAUDIO_MODE_LANG_B = 0x20,
+    AMTVAUDIO_MODE_LANG_C = 0x40,
+    AMTVAUDIO_PRESET_STEREO = 0x200,
+    AMTVAUDIO_PRESET_LANG_A = 0x1000,
+    AMTVAUDIO_PRESET_LANG_B = 0x2000,
+    AMTVAUDIO_PRESET_LANG_C = 0x4000
+} TVAudioMode;
 /*****************************************************************************
  * IEnumRegFilters interface
  */
@@ -10335,6 +10381,140 @@
 
 #endif  /* __IAMGraphBuilderCallback_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * IAMVfwCaptureDialogs interface
+ */
+#ifndef __IAMVfwCaptureDialogs_INTERFACE_DEFINED__
+#define __IAMVfwCaptureDialogs_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAMVfwCaptureDialogs, 0xd8d715a0, 0x6e5e, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d8d715a0-6e5e-11d0-b3f0-00aa003761c5")
+IAMVfwCaptureDialogs : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE HasDialog(
+        int dialog) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowDialog(
+        int dialog,
+        HWND hwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendDriverMessage(
+        int dialog,
+        int msg,
+        LONG data1,
+        LONG data2) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAMVfwCaptureDialogs, 0xd8d715a0, 0x6e5e, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5)
+#endif
+#else
+typedef struct IAMVfwCaptureDialogsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAMVfwCaptureDialogs* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAMVfwCaptureDialogs* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAMVfwCaptureDialogs* This);
+
+    /*** IAMVfwCaptureDialogs methods ***/
+    HRESULT (STDMETHODCALLTYPE *HasDialog)(
+        IAMVfwCaptureDialogs* This,
+        int dialog);
+
+    HRESULT (STDMETHODCALLTYPE *ShowDialog)(
+        IAMVfwCaptureDialogs* This,
+        int dialog,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *SendDriverMessage)(
+        IAMVfwCaptureDialogs* This,
+        int dialog,
+        int msg,
+        LONG data1,
+        LONG data2);
+
+    END_INTERFACE
+} IAMVfwCaptureDialogsVtbl;
+interface IAMVfwCaptureDialogs {
+    CONST_VTBL IAMVfwCaptureDialogsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAMVfwCaptureDialogs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAMVfwCaptureDialogs_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAMVfwCaptureDialogs_Release(This) (This)->lpVtbl->Release(This)
+/*** IAMVfwCaptureDialogs methods ***/
+#define IAMVfwCaptureDialogs_HasDialog(This,dialog) (This)->lpVtbl->HasDialog(This,dialog)
+#define IAMVfwCaptureDialogs_ShowDialog(This,dialog,hwnd) (This)->lpVtbl->ShowDialog(This,dialog,hwnd)
+#define IAMVfwCaptureDialogs_SendDriverMessage(This,dialog,msg,data1,data2) (This)->lpVtbl->SendDriverMessage(This,dialog,msg,data1,data2)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAMVfwCaptureDialogs_QueryInterface(IAMVfwCaptureDialogs* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAMVfwCaptureDialogs_AddRef(IAMVfwCaptureDialogs* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAMVfwCaptureDialogs_Release(IAMVfwCaptureDialogs* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IAMVfwCaptureDialogs methods ***/
+static FORCEINLINE HRESULT IAMVfwCaptureDialogs_HasDialog(IAMVfwCaptureDialogs* This,int dialog) {
+    return This->lpVtbl->HasDialog(This,dialog);
+}
+static FORCEINLINE HRESULT IAMVfwCaptureDialogs_ShowDialog(IAMVfwCaptureDialogs* This,int dialog,HWND hwnd) {
+    return This->lpVtbl->ShowDialog(This,dialog,hwnd);
+}
+static FORCEINLINE HRESULT IAMVfwCaptureDialogs_SendDriverMessage(IAMVfwCaptureDialogs* This,int dialog,int msg,LONG data1,LONG data2) {
+    return This->lpVtbl->SendDriverMessage(This,dialog,msg,data1,data2);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_HasDialog_Proxy(
+    IAMVfwCaptureDialogs* This,
+    int dialog);
+void __RPC_STUB IAMVfwCaptureDialogs_HasDialog_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_ShowDialog_Proxy(
+    IAMVfwCaptureDialogs* This,
+    int dialog,
+    HWND hwnd);
+void __RPC_STUB IAMVfwCaptureDialogs_ShowDialog_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_SendDriverMessage_Proxy(
+    IAMVfwCaptureDialogs* This,
+    int dialog,
+    int msg,
+    LONG data1,
+    LONG data2);
+void __RPC_STUB IAMVfwCaptureDialogs_SendDriverMessage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ */
+
 #ifndef __IReferenceClock2_FWD_DEFINED__
 #define __IReferenceClock2_FWD_DEFINED__
 typedef struct IReferenceClock2 IReferenceClock2;
@@ -10349,11 +10529,6 @@
 typedef struct IAMVideoCompression IAMVideoCompression;
 #endif
 
-#ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__
-#define __IAMVfwCaptureDialogs_FWD_DEFINED__
-typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
-#endif
-
 #ifndef __IAMVfwCompressDialogs_FWD_DEFINED__
 #define __IAMVfwCompressDialogs_FWD_DEFINED__
 typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
@@ -10950,49 +11125,6 @@
     VfwCompressDialog_Config = 0x1,VfwCompressDialog_About = 0x2,VfwCompressDialog_QueryConfig = 0x4,VfwCompressDialog_QueryAbout = 0x8
   } VfwCompressDialogs;
 
-  extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_s_ifspec;
-#ifndef __IAMVfwCaptureDialogs_INTERFACE_DEFINED__
-#define __IAMVfwCaptureDialogs_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IAMVfwCaptureDialogs;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IAMVfwCaptureDialogs : public IUnknown {
-  public:
-    virtual HRESULT WINAPI HasDialog(int iDialog) = 0;
-    virtual HRESULT WINAPI ShowDialog(int iDialog,HWND hwnd) = 0;
-    virtual HRESULT WINAPI SendDriverMessage(int iDialog,int uMsg,LONG dw1,LONG dw2) = 0;
-  };
-#else
-  typedef struct IAMVfwCaptureDialogsVtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IAMVfwCaptureDialogs *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IAMVfwCaptureDialogs *This);
-      ULONG (WINAPI *Release)(IAMVfwCaptureDialogs *This);
-      HRESULT (WINAPI *HasDialog)(IAMVfwCaptureDialogs *This,int iDialog);
-      HRESULT (WINAPI *ShowDialog)(IAMVfwCaptureDialogs *This,int iDialog,HWND hwnd);
-      HRESULT (WINAPI *SendDriverMessage)(IAMVfwCaptureDialogs *This,int iDialog,int uMsg,LONG dw1,LONG dw2);
-    END_INTERFACE
-  } IAMVfwCaptureDialogsVtbl;
-  struct IAMVfwCaptureDialogs {
-    CONST_VTBL struct IAMVfwCaptureDialogsVtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define IAMVfwCaptureDialogs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IAMVfwCaptureDialogs_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IAMVfwCaptureDialogs_Release(This) (This)->lpVtbl->Release(This)
-#define IAMVfwCaptureDialogs_HasDialog(This,iDialog) (This)->lpVtbl->HasDialog(This,iDialog)
-#define IAMVfwCaptureDialogs_ShowDialog(This,iDialog,hwnd) (This)->lpVtbl->ShowDialog(This,iDialog,hwnd)
-#define IAMVfwCaptureDialogs_SendDriverMessage(This,iDialog,uMsg,dw1,dw2) (This)->lpVtbl->SendDriverMessage(This,iDialog,uMsg,dw1,dw2)
-#endif
-#endif
-  HRESULT WINAPI IAMVfwCaptureDialogs_HasDialog_Proxy(IAMVfwCaptureDialogs *This,int iDialog);
-  void __RPC_STUB IAMVfwCaptureDialogs_HasDialog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IAMVfwCaptureDialogs_ShowDialog_Proxy(IAMVfwCaptureDialogs *This,int iDialog,HWND hwnd);
-  void __RPC_STUB IAMVfwCaptureDialogs_ShowDialog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IAMVfwCaptureDialogs_SendDriverMessage_Proxy(IAMVfwCaptureDialogs *This,int iDialog,int uMsg,LONG dw1,LONG dw2);
-  void __RPC_STUB IAMVfwCaptureDialogs_SendDriverMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
 #ifndef __IAMVfwCompressDialogs_INTERFACE_DEFINED__
 #define __IAMVfwCompressDialogs_INTERFACE_DEFINED__
   EXTERN_C const IID IID_IAMVfwCompressDialogs;
@@ -11231,18 +11363,6 @@
   void __RPC_STUB IAMBufferNegotiation_GetAllocatorProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
 #endif
 
-  typedef enum tagAnalogVideoStandard {
-    AnalogVideo_None = 0,AnalogVideo_NTSC_M = 0x1,AnalogVideo_NTSC_M_J = 0x2,AnalogVideo_NTSC_433 = 0x4,AnalogVideo_PAL_B = 0x10,
-    AnalogVideo_PAL_D = 0x20,AnalogVideo_PAL_G = 0x40,AnalogVideo_PAL_H = 0x80,AnalogVideo_PAL_I = 0x100,AnalogVideo_PAL_M = 0x200,
-    AnalogVideo_PAL_N = 0x400,AnalogVideo_PAL_60 = 0x800,AnalogVideo_SECAM_B = 0x1000,AnalogVideo_SECAM_D = 0x2000,AnalogVideo_SECAM_G = 0x4000,
-    AnalogVideo_SECAM_H = 0x8000,AnalogVideo_SECAM_K = 0x10000,AnalogVideo_SECAM_K1 = 0x20000,AnalogVideo_SECAM_L = 0x40000,AnalogVideo_SECAM_L1 = 0x80000,
-    AnalogVideo_PAL_N_COMBO = 0x100000,AnalogVideoMask_MCE_NTSC = AnalogVideo_NTSC_M | AnalogVideo_NTSC_M_J | AnalogVideo_NTSC_433 | AnalogVideo_PAL_M | AnalogVideo_PAL_N | AnalogVideo_PAL_60 | AnalogVideo_PAL_N_COMBO,AnalogVideoMask_MCE_PAL = AnalogVideo_PAL_B | AnalogVideo_PAL_D | AnalogVideo_PAL_G | AnalogVideo_PAL_H | AnalogVideo_PAL_I,AnalogVideoMask_MCE_SECAM = AnalogVideo_SECAM_B | AnalogVideo_SECAM_D | AnalogVideo_SECAM_G | AnalogVideo_SECAM_H | AnalogVideo_SECAM_K | AnalogVideo_SECAM_K1 | AnalogVideo_SECAM_L | AnalogVideo_SECAM_L1
-  } AnalogVideoStandard;
-
-  typedef enum tagTunerInputType {
-    TunerInputCable = 0,TunerInputAntenna = TunerInputCable + 1
-  } TunerInputType;
-
 #define AnalogVideo_NTSC_Mask 0x00000007
 #define AnalogVideo_PAL_Mask 0x00100FF0
 #define AnalogVideo_SECAM_Mask 0x000FF000
@@ -11838,10 +11958,6 @@
   void __RPC_STUB IBPCSatelliteTuner_IsTapingPermitted_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
 #endif
 
-  typedef enum tagTVAudioMode {
-    AMTVAUDIO_MODE_MONO = 0x1,AMTVAUDIO_MODE_STEREO = 0x2,AMTVAUDIO_MODE_LANG_A = 0x10,AMTVAUDIO_MODE_LANG_B = 0x20,AMTVAUDIO_MODE_LANG_C = 0x40
-  } TVAudioMode;
-
   typedef enum tagAMTVAudioEventType {
     AMTVAUDIO_EVENT_CHANGED = 0x1
   } AMTVAudioEventType;
diff --git a/x86_64-w64-mingw32/include/tabflicks.h b/x86_64-w64-mingw32/include/tabflicks.h
index f41b7f8..553228f 100644
--- a/x86_64-w64-mingw32/include/tabflicks.h
+++ b/x86_64-w64-mingw32/include/tabflicks.h
@@ -70,4 +70,4 @@
 }
 #endif
 #endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif _INC_TABFLICKS
+#endif /* _INC_TABFLICKS */
diff --git a/x86_64-w64-mingw32/include/textstor.h b/x86_64-w64-mingw32/include/textstor.h
index 3aa5a7c..0e051d7 100644
--- a/x86_64-w64-mingw32/include/textstor.h
+++ b/x86_64-w64-mingw32/include/textstor.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/textstor.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/textstor.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -91,6 +91,10 @@
 
 #define TS_ST_CORRECTION (0x1)
 
+#define GXFPF_ROUND_NEAREST (0x1)
+
+#define GXFPF_NEAREST (0x2)
+
 typedef enum __WIDL_textstor_generated_name_00000002 {
     TS_AE_NONE = 0,
     TS_AE_START = 1,
diff --git a/x86_64-w64-mingw32/include/tlbref.h b/x86_64-w64-mingw32/include/tlbref.h
index d2418c5..7ecc3cd 100644
--- a/x86_64-w64-mingw32/include/tlbref.h
+++ b/x86_64-w64-mingw32/include/tlbref.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from tlbref.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/tlbref.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/tom.h b/x86_64-w64-mingw32/include/tom.h
index c3bc7a3..1bb7545 100644
--- a/x86_64-w64-mingw32/include/tom.h
+++ b/x86_64-w64-mingw32/include/tom.h
@@ -121,31 +121,31 @@
 #ifndef __tom_LIBRARY_DEFINED__
 #define __tom_LIBRARY_DEFINED__
   typedef enum __MIDL___MIDL_itf_tom_0000_0001 {
-    tomFalse = 0,tomTrue = -1,tomUndefined = -9999999,tomToggle = -9999998,tomAutoColor = -9999997,tomDefault = -9999996,tomSuspend = -9999995,
-    tomResume = -9999994,tomApplyNow = 0,tomApplyLater = 1,tomTrackParms = 2,tomCacheParms = 3,tomBackward = 0xc0000001,tomForward = 0x3fffffff,
-    tomMove = 0,tomExtend = 1,tomNoSelection = 0,tomSelectionIP = 1,tomSelectionNormal = 2,tomSelectionFrame = 3,tomSelectionColumn = 4,
-    tomSelectionRow = 5,tomSelectionBlock = 6,tomSelectionInlineShape = 7,tomSelectionShape = 8,tomSelStartActive = 1,tomSelAtEOL = 2,
-    tomSelOvertype = 4,tomSelActive = 8,tomSelReplace = 16,tomEnd = 0,tomStart = 32,tomCollapseEnd = 0,tomCollapseStart = 1,tomClientCoord = 256,
-    tomNone = 0,tomSingle = 1,tomWords = 2,tomDouble = 3,tomDotted = 4,tomDash = 5,tomDashDot = 6,tomDashDotDot = 7,tomWave = 8,tomThick = 9,
-    tomHair = 10,tomLineSpaceSingle = 0,tomLineSpace1pt5 = 1,tomLineSpaceDouble = 2,tomLineSpaceAtLeast = 3,tomLineSpaceExactly = 4,
-    tomLineSpaceMultiple = 5,tomAlignLeft = 0,tomAlignCenter = 1,tomAlignRight = 2,tomAlignJustify = 3,tomAlignDecimal = 3,tomAlignBar = 4,
-    tomAlignInterWord = 3,tomAlignInterLetter = 4,tomAlignScaled = 5,tomAlignGlyphs = 6,tomAlignSnapGrid = 7,tomSpaces = 0,tomDots = 1,tomDashes = 2,
-    tomLines = 3,tomThickLines = 4,tomEquals = 5,tomTabBack = -3,tomTabNext = -2,tomTabHere = -1,tomListNone = 0,tomListBullet = 1,
-    tomListNumberAsArabic = 2,tomListNumberAsLCLetter = 3,tomListNumberAsUCLetter = 4,tomListNumberAsLCRoman = 5,tomListNumberAsUCRoman = 6,
-    tomListNumberAsSequence = 7,tomListParentheses = 0x10000,tomListPeriod = 0x20000,tomListPlain = 0x30000,tomCharacter = 1,tomWord = 2,
-    tomSentence = 3,tomParagraph = 4,tomLine = 5,tomStory = 6,tomScreen = 7,tomSection = 8,tomColumn = 9,tomRow = 10,tomWindow = 11,tomCell = 12,
-    tomCharFormat = 13,tomParaFormat = 14,tomTable = 15,tomObject = 16,tomMatchWord = 2,tomMatchCase = 4,tomMatchPattern = 8,tomUnknownStory = 0,
-    tomMainTextStory = 1,tomFootnotesStory = 2,tomEndnotesStory = 3,tomCommentsStory = 4,tomTextFrameStory = 5,tomEvenPagesHeaderStory = 6,
-    tomPrimaryHeaderStory = 7,tomEvenPagesFooterStory = 8,tomPrimaryFooterStory = 9,tomFirstPageHeaderStory = 10,tomFirstPageFooterStory = 11,
-    tomNoAnimation = 0,tomLasVegasLights = 1,tomBlinkingBackground = 2,tomSparkleText = 3,tomMarchingBlackAnts = 4,tomMarchingRedAnts = 5,
-    tomShimmer = 6,tomWipeDown = 7,tomWipeRight = 8,tomAnimationMax = 8,tomLowerCase = 0,tomUpperCase = 1,tomTitleCase = 2,tomSentenceCase = 4,
-    tomToggleCase = 5,tomReadOnly = 0x100,tomShareDenyRead = 0x200,tomShareDenyWrite = 0x400,tomPasteFile = 0x1000,tomCreateNew = 0x10,
-    tomCreateAlways = 0x20,tomOpenExisting = 0x30,tomOpenAlways = 0x40,tomTruncateExisting = 0x50,tomRTF = 0x1,tomText = 0x2,tomHTML = 0x3,
-    tomWordDocument = 0x4,tomBold = 0x80000001,tomItalic = 0x80000002,tomUnderline = 0x80000004,tomStrikeout = 0x80000008,tomProtected = 0x80000010,
-    tomLink = 0x80000020,tomSmallCaps = 0x80000040,tomAllCaps = 0x80000080,tomHidden = 0x80000100,tomOutline = 0x80000200,tomShadow = 0x80000400,
-    tomEmboss = 0x80000800,tomImprint = 0x80001000,tomDisabled = 0x80002000,tomRevised = 0x80004000,tomNormalCaret = 0,tomKoreanBlockCaret = 0x1,
-    tomIncludeInset = 0x1,tomIgnoreCurrentFont = 0,tomMatchFontCharset = 0x1,tomMatchFontSignature = 0x2,tomCharset = 0x80000000,tomRE10Mode = 0x1,
-    tomNoIME = 0x80000,tomSelfIME = 0x40000
+    tomFalse = (int) 0,tomTrue = (int) -1,tomUndefined = (int) -9999999,tomToggle = (int) -9999998,tomAutoColor = (int) -9999997,tomDefault = (int) -9999996,tomSuspend = (int) -9999995,
+    tomResume = (int) -9999994,tomApplyNow = (int) 0,tomApplyLater = (int) 1,tomTrackParms = (int) 2,tomCacheParms = (int) 3,tomBackward = (int) 0xc0000001,tomForward = (int) 0x3fffffff,
+    tomMove = (int) 0,tomExtend = (int) 1,tomNoSelection = (int) 0,tomSelectionIP = (int) 1,tomSelectionNormal = (int) 2,tomSelectionFrame = (int) 3,tomSelectionColumn = (int) 4,
+    tomSelectionRow = (int) 5,tomSelectionBlock = (int) 6,tomSelectionInlineShape = (int) 7,tomSelectionShape = (int) 8,tomSelStartActive = (int) 1,tomSelAtEOL = (int) 2,
+    tomSelOvertype = (int) 4,tomSelActive = (int) 8,tomSelReplace = (int) 16,tomEnd = (int) 0,tomStart = (int) 32,tomCollapseEnd = (int) 0,tomCollapseStart = (int) 1,tomClientCoord = (int) 256,
+    tomNone = (int) 0,tomSingle = (int) 1,tomWords = (int) 2,tomDouble = (int) 3,tomDotted = (int) 4,tomDash = (int) 5,tomDashDot = (int) 6,tomDashDotDot = (int) 7,tomWave = (int) 8,tomThick = (int) 9,
+    tomHair = (int) 10,tomLineSpaceSingle = (int) 0,tomLineSpace1pt5 = (int) 1,tomLineSpaceDouble = (int) 2,tomLineSpaceAtLeast = (int) 3,tomLineSpaceExactly = (int) 4,
+    tomLineSpaceMultiple = (int) 5,tomAlignLeft = (int) 0,tomAlignCenter = (int) 1,tomAlignRight = (int) 2,tomAlignJustify = (int) 3,tomAlignDecimal = (int) 3,tomAlignBar = (int) 4,
+    tomAlignInterWord = (int) 3,tomAlignInterLetter = (int) 4,tomAlignScaled = (int) 5,tomAlignGlyphs = (int) 6,tomAlignSnapGrid = (int) 7,tomSpaces = (int) 0,tomDots = (int) 1,tomDashes = (int) 2,
+    tomLines = (int) 3,tomThickLines = (int) 4,tomEquals = (int) 5,tomTabBack = (int) -3,tomTabNext = (int) -2,tomTabHere = (int) -1,tomListNone = (int) 0,tomListBullet = (int) 1,
+    tomListNumberAsArabic = (int) 2,tomListNumberAsLCLetter = (int) 3,tomListNumberAsUCLetter = (int) 4,tomListNumberAsLCRoman = (int) 5,tomListNumberAsUCRoman = (int) 6,
+    tomListNumberAsSequence = (int) 7,tomListParentheses = (int) 0x10000,tomListPeriod = (int) 0x20000,tomListPlain = (int) 0x30000,tomCharacter = (int) 1,tomWord = (int) 2,
+    tomSentence = (int) 3,tomParagraph = (int) 4,tomLine = (int) 5,tomStory = (int) 6,tomScreen = (int) 7,tomSection = (int) 8,tomColumn = (int) 9,tomRow = (int) 10,tomWindow = (int) 11,tomCell = (int) 12,
+    tomCharFormat = (int) 13,tomParaFormat = (int) 14,tomTable = (int) 15,tomObject = (int) 16,tomMatchWord = (int) 2,tomMatchCase = (int) 4,tomMatchPattern = (int) 8,tomUnknownStory = (int) 0,
+    tomMainTextStory = (int) 1,tomFootnotesStory = (int) 2,tomEndnotesStory = (int) 3,tomCommentsStory = (int) 4,tomTextFrameStory = (int) 5,tomEvenPagesHeaderStory = (int) 6,
+    tomPrimaryHeaderStory = (int) 7,tomEvenPagesFooterStory = (int) 8,tomPrimaryFooterStory = (int) 9,tomFirstPageHeaderStory = (int) 10,tomFirstPageFooterStory = (int) 11,
+    tomNoAnimation = (int) 0,tomLasVegasLights = (int) 1,tomBlinkingBackground = (int) 2,tomSparkleText = (int) 3,tomMarchingBlackAnts = (int) 4,tomMarchingRedAnts = (int) 5,
+    tomShimmer = (int) 6,tomWipeDown = (int) 7,tomWipeRight = (int) 8,tomAnimationMax = (int) 8,tomLowerCase = (int) 0,tomUpperCase = (int) 1,tomTitleCase = (int) 2,tomSentenceCase = (int) 4,
+    tomToggleCase = (int) 5,tomReadOnly = (int) 0x100,tomShareDenyRead = (int) 0x200,tomShareDenyWrite = (int) 0x400,tomPasteFile = (int) 0x1000,tomCreateNew = (int) 0x10,
+    tomCreateAlways = (int) 0x20,tomOpenExisting = (int) 0x30,tomOpenAlways = (int) 0x40,tomTruncateExisting = (int) 0x50,tomRTF = (int) 0x1,tomText = (int) 0x2,tomHTML = (int) 0x3,
+    tomWordDocument = (int) 0x4,tomBold = (int) 0x80000001,tomItalic = (int) 0x80000002,tomUnderline = (int) 0x80000004,tomStrikeout = (int) 0x80000008,tomProtected = (int) 0x80000010,
+    tomLink = (int) 0x80000020,tomSmallCaps = (int) 0x80000040,tomAllCaps = (int) 0x80000080,tomHidden = (int) 0x80000100,tomOutline = (int) 0x80000200,tomShadow = (int) 0x80000400,
+    tomEmboss = (int) 0x80000800,tomImprint = (int) 0x80001000,tomDisabled = (int) 0x80002000,tomRevised = (int) 0x80004000,tomNormalCaret = (int) 0,tomKoreanBlockCaret = (int) 0x1,
+    tomIncludeInset = (int) 0x1,tomIgnoreCurrentFont = (int) 0,tomMatchFontCharset = (int) 0x1,tomMatchFontSignature = (int) 0x2,tomCharset = (int) 0x80000000,tomRE10Mode = (int) 0x1,
+    tomNoIME = (int) 0x80000,tomSelfIME = (int) 0x40000
   } tomConstants;
 
   EXTERN_C const IID LIBID_tom;
diff --git a/x86_64-w64-mingw32/include/tpcshrd.h b/x86_64-w64-mingw32/include/tpcshrd.h
index a8dd1fc..b114270 100644
--- a/x86_64-w64-mingw32/include/tpcshrd.h
+++ b/x86_64-w64-mingw32/include/tpcshrd.h
@@ -44,6 +44,17 @@
 typedef DWORD CURSOR_ID;
 typedef USHORT SYSTEM_EVENT;
 typedef DWORD TABLET_CONTEXT_ID;
+#ifndef _XFORM_
+#define _XFORM_
+typedef struct tagXFORM {
+    float eM11;
+    float eM12;
+    float eM21;
+    float eM22;
+    float eDx;
+    float eDy;
+} XFORM;
+#endif
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/x86_64-w64-mingw32/include/tsattrs.h b/x86_64-w64-mingw32/include/tsattrs.h
index b60d752..c119cbd 100644
--- a/x86_64-w64-mingw32/include/tsattrs.h
+++ b/x86_64-w64-mingw32/include/tsattrs.h
@@ -1,100 +1,100 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-
-#ifndef _TSATTRS_H_
-#define _TSATTRS_H_
-
-DEFINE_GUID(TSATTRID_OTHERS, 0xb3c32af9,0x57d0,0x46a9,0xbc,0xa8,0xda,0xc2,0x38,0xa1,0x30,0x57);
-
-DEFINE_GUID(TSATTRID_Font,                           0x573ea825,0x749b,0x4f8a,0x9c,0xfd,0x21,0xc3,0x60,0x5c,0xa8,0x28);
-DEFINE_GUID(TSATTRID_Font_FaceName,                  0xb536aeb6,0x053b,0x4eb8,0xb6,0x5a,0x50,0xda,0x1e,0x81,0xe7,0x2e);
-DEFINE_GUID(TSATTRID_Font_SizePts,                   0xc8493302,0xa5e9,0x456d,0xaf,0x04,0x80,0x05,0xe4,0x13,0x0f,0x03);
-DEFINE_GUID(TSATTRID_Font_Style,                     0x68b2a77f,0x6b0e,0x4f28,0x81,0x77,0x57,0x1c,0x2f,0x3a,0x42,0xb1);
-DEFINE_GUID(TSATTRID_Font_Style_Bold,                0x48813a43,0x8a20,0x4940,0x8e,0x58,0x97,0x82,0x3f,0x7b,0x26,0x8a);
-DEFINE_GUID(TSATTRID_Font_Style_Italic,              0x8740682a,0xa765,0x48e1,0xac,0xfc,0xd2,0x22,0x22,0xb2,0xf8,0x10);
-DEFINE_GUID(TSATTRID_Font_Style_SmallCaps,           0xfacb6bc6,0x9100,0x4cc6,0xb9,0x69,0x11,0xee,0xa4,0x5a,0x86,0xb4);
-DEFINE_GUID(TSATTRID_Font_Style_Capitalize,          0x7d85a3ba,0xb4fd,0x43b3,0xbe,0xfc,0x6b,0x98,0x5c,0x84,0x31,0x41);
-DEFINE_GUID(TSATTRID_Font_Style_Uppercase,           0x33a300e8,0xe340,0x4937,0xb6,0x97,0x8f,0x23,0x40,0x45,0xcd,0x9a);
-DEFINE_GUID(TSATTRID_Font_Style_Lowercase,           0x76d8ccb5,0xca7b,0x4498,0x8e,0xe9,0xd5,0xc4,0xf6,0xf7,0x4c,0x60);
-DEFINE_GUID(TSATTRID_Font_Style_Animation,           0xdcf73d22,0xe029,0x47b7,0xbb,0x36,0xf2,0x63,0xa3,0xd0,0x04,0xcc);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_LasVegasLights,     0xf40423d5,0x0f87,0x4f8f,0xba,0xda,0xe6,0xd6,0x0c,0x25,0xe1,0x52);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_BlinkingBackground, 0x86e5b104,0x0104,0x4b10,0xb5,0x85,0x00,0xf2,0x52,0x75,0x22,0xb5);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_SparkleText,        0x533aad20,0x962c,0x4e9f,0x8c,0x09,0xb4,0x2e,0xa4,0x74,0x97,0x11);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_MarchingBlackAnts,  0x7644e067,0xf186,0x4902,0xbf,0xc6,0xec,0x81,0x5a,0xa2,0x0e,0x9d);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_MarchingRedAnts,    0x78368dad,0x50fb,0x4c6f,0x84,0x0b,0xd4,0x86,0xbb,0x6c,0xf7,0x81);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_Shimmer,    0x2ce31b58,0x5293,0x4c36,0x88,0x09,0xbf,0x8b,0xb5,0x1a,0x27,0xb3);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_WipeDown,   0x5872e874,0x367b,0x4803,0xb1,0x60,0xc9,0x0f,0xf6,0x25,0x69,0xd0);
-DEFINE_GUID(TSATTRID_Font_Style_Animation_WipeRight,  0xb855cbe3,0x3d2c,0x4600,0xb1,0xe9,0xe1,0xc9,0xce,0x02,0xf8,0x42);
-DEFINE_GUID(TSATTRID_Font_Style_Emboss,               0xbd8ed742,0x349e,0x4e37,0x82,0xfb,0x43,0x79,0x79,0xcb,0x53,0xa7);
-DEFINE_GUID(TSATTRID_Font_Style_Engrave,              0x9c3371de,0x8332,0x4897,0xbe,0x5d,0x89,0x23,0x32,0x23,0x17,0x9a);
-DEFINE_GUID(TSATTRID_Font_Style_Hidden,               0xb1e28770,0x881c,0x475f,0x86,0x3f,0x88,0x7a,0x64,0x7b,0x10,0x90);
-DEFINE_GUID(TSATTRID_Font_Style_Kerning,              0xcc26e1b4,0x2f9a,0x47c8,0x8b,0xff,0xbf,0x1e,0xb7,0xcc,0xe0,0xdd);
-DEFINE_GUID(TSATTRID_Font_Style_Outlined,             0x10e6db31,0xdb0d,0x4ac6,0xa7,0xf5,0x9c,0x9c,0xff,0x6f,0x2a,0xb4);
-DEFINE_GUID(TSATTRID_Font_Style_Position,             0x15cd26ab,0xf2fb,0x4062,0xb5,0xa6,0x9a,0x49,0xe1,0xa5,0xcc,0x0b);
-DEFINE_GUID(TSATTRID_Font_Style_Protected,            0x1c557cb2,0x14cf,0x4554,0xa5,0x74,0xec,0xb2,0xf7,0xe7,0xef,0xd4);
-DEFINE_GUID(TSATTRID_Font_Style_Shadow,               0x5f686d2f,0xc6cd,0x4c56,0x8a,0x1a,0x99,0x4a,0x4b,0x97,0x66,0xbe);
-DEFINE_GUID(TSATTRID_Font_Style_Spacing,              0x98c1200d,0x8f06,0x409a,0x8e,0x49,0x6a,0x55,0x4b,0xf7,0xc1,0x53);
-DEFINE_GUID(TSATTRID_Font_Style_Weight,               0x12f3189c,0x8bb0,0x461b,0xb1,0xfa,0xea,0xf9,0x07,0x04,0x7f,0xe0);
-DEFINE_GUID(TSATTRID_Font_Style_Height,               0x7e937477,0x12e6,0x458b,0x92,0x6a,0x1f,0xa4,0x4e,0xe8,0xf3,0x91);
-DEFINE_GUID(TSATTRID_Font_Style_Underline,            0xc3c9c9f3,0x7902,0x444b,0x9a,0x7b,0x48,0xe7,0x0f,0x4b,0x50,0xf7);
-DEFINE_GUID(TSATTRID_Font_Style_Underline_Single,     0x1b6720e5,0x0f73,0x4951,0xa6,0xb3,0x6f,0x19,0xe4,0x3c,0x94,0x61);
-DEFINE_GUID(TSATTRID_Font_Style_Underline_Double,     0x74d24aa6,0x1db3,0x4c69,0xa1,0x76,0x31,0x12,0x0e,0x75,0x86,0xd5);
-DEFINE_GUID(TSATTRID_Font_Style_Strikethrough,        0x0c562193,0x2d08,0x4668,0x96,0x01,0xce,0xd4,0x13,0x09,0xd7,0xaf);
-DEFINE_GUID(TSATTRID_Font_Style_Strikethrough_Single, 0x75d736b6,0x3c8f,0x4b97,0xab,0x78,0x18,0x77,0xcb,0x99,0x0d,0x31);
-DEFINE_GUID(TSATTRID_Font_Style_Strikethrough_Double, 0x62489b31,0xa3e7,0x4f94,0xac,0x43,0xeb,0xaf,0x8f,0xcc,0x7a,0x9f);
-DEFINE_GUID(TSATTRID_Font_Style_Overline,             0xe3989f4a,0x992b,0x4301,0x8c,0xe1,0xa5,0xb7,0xc6,0xd1,0xf3,0xc8);
-DEFINE_GUID(TSATTRID_Font_Style_Overline_Single,      0x8440d94c,0x51ce,0x47b2,0x8d,0x4c,0x15,0x75,0x1e,0x5f,0x72,0x1b);
-DEFINE_GUID(TSATTRID_Font_Style_Overline_Double,      0xdc46063a,0xe115,0x46e3,0xbc,0xd8,0xca,0x67,0x72,0xaa,0x95,0xb4);
-DEFINE_GUID(TSATTRID_Font_Style_Blink,                0xbfb2c036,0x7acf,0x4532,0xb7,0x20,0xb4,0x16,0xdd,0x77,0x65,0xa8);
-DEFINE_GUID(TSATTRID_Font_Style_Subscript,            0x5774fb84,0x389b,0x43bc,0xa7,0x4b,0x15,0x68,0x34,0x7c,0xf0,0xf4);
-DEFINE_GUID(TSATTRID_Font_Style_Superscript,          0x2ea4993c,0x563c,0x49aa,0x93,0x72,0x0b,0xef,0x09,0xa9,0x25,0x5b);
-DEFINE_GUID(TSATTRID_Font_Style_Color,                0x857a7a37,0xb8af,0x4e9a,0x81,0xb4,0xac,0xf7,0x00,0xc8,0x41,0x1b);
-DEFINE_GUID(TSATTRID_Font_Style_BackgroundColor,      0xb50eaa4e,0x3091,0x4468,0x81,0xdb,0xd7,0x9e,0xa1,0x90,0xc7,0xc7);
-
-DEFINE_GUID(TSATTRID_Text,                            0x7edb8e68,0x81f9,0x449d,0xa1,0x5a,0x87,0xa8,0x38,0x8f,0xaa,0xc0);
-DEFINE_GUID(TSATTRID_Text_VerticalWriting,            0x6bba8195,0x046f,0x4ea9,0xb3,0x11,0x97,0xfd,0x66,0xc4,0x27,0x4b);
-DEFINE_GUID(TSATTRID_Text_RightToLeft,                0xca666e71,0x1b08,0x453d,0xbf,0xdd,0x28,0xe0,0x8c,0x8a,0xaf,0x7a);
-DEFINE_GUID(TSATTRID_Text_Orientation,                0x6bab707f,0x8785,0x4c39,0x8b,0x52,0x96,0xf8,0x78,0x30,0x3f,0xfb);
-DEFINE_GUID(TSATTRID_Text_Language,                   0xd8c04ef1,0x5753,0x4c25,0x88,0x87,0x85,0x44,0x3f,0xe5,0xf8,0x19);
-DEFINE_GUID(TSATTRID_Text_ReadOnly,                   0x85836617,0xde32,0x4afd,0xa5,0x0f,0xa2,0xdb,0x11,0x0e,0x6e,0x4d);
-DEFINE_GUID(TSATTRID_Text_EmbeddedObject,             0x7edb8e68,0x81f9,0x449d,0xa1,0x5a,0x87,0xa8,0x38,0x8f,0xaa,0xc0);
-DEFINE_GUID(TSATTRID_Text_Alignment,                  0x139941e6,0x1767,0x456d,0x93,0x8e,0x35,0xba,0x56,0x8b,0x5c,0xd4);
-DEFINE_GUID(TSATTRID_Text_Alignment_Left,             0x16ae95d3,0x6361,0x43a2,0x84,0x95,0xd0,0x0f,0x39,0x7f,0x16,0x93);
-DEFINE_GUID(TSATTRID_Text_Alignment_Right,            0xb36f0f98,0x1b9e,0x4360,0x86,0x16,0x03,0xfb,0x08,0xa7,0x84,0x56);
-DEFINE_GUID(TSATTRID_Text_Alignment_Center,           0xa4a95c16,0x53bf,0x4d55,0x8b,0x87,0x4b,0xdd,0x8d,0x42,0x75,0xfc);
-DEFINE_GUID(TSATTRID_Text_Alignment_Justify,          0xed350740,0xa0f7,0x42d3,0x8e,0xa8,0xf8,0x1b,0x64,0x88,0xfa,0xf0);
-DEFINE_GUID(TSATTRID_Text_Link,                       0x47cd9051,0x3722,0x4cd8,0xb7,0xc8,0x4e,0x17,0xca,0x17,0x59,0xf5);
-DEFINE_GUID(TSATTRID_Text_Hyphenation,                0xdadf4525,0x618e,0x49eb,0xb1,0xa8,0x3b,0x68,0xbd,0x76,0x48,0xe3);
-DEFINE_GUID(TSATTRID_Text_Para,                       0x5edc5822,0x99dc,0x4dd6,0xae,0xc3,0xb6,0x2b,0xaa,0x5b,0x2e,0x7c);
-DEFINE_GUID(TSATTRID_Text_Para_FirstLineIndent,       0x07c97a13,0x7472,0x4dd8,0x90,0xa9,0x91,0xe3,0xd7,0xe4,0xf2,0x9c);
-DEFINE_GUID(TSATTRID_Text_Para_LeftIndent,            0xfb2848e9,0x7471,0x41c9,0xb6,0xb3,0x8a,0x14,0x50,0xe0,0x18,0x97);
-DEFINE_GUID(TSATTRID_Text_Para_RightIndent,           0x2c7f26f9,0xa5e2,0x48da,0xb9,0x8a,0x52,0x0c,0xb1,0x65,0x13,0xbf);
-DEFINE_GUID(TSATTRID_Text_Para_SpaceAfter,            0x7b0a3f55,0x22dc,0x425f,0xa4,0x11,0x93,0xda,0x1d,0x8f,0x9b,0xaa);
-DEFINE_GUID(TSATTRID_Text_Para_SpaceBefore,           0x8df98589,0x194a,0x4601,0xb2,0x51,0x98,0x65,0xa3,0xe9,0x06,0xdd);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing,           0x699b380d,0x7f8c,0x46d6,0xa7,0x3b,0xdf,0xe3,0xd1,0x53,0x8d,0xf3);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Single,    0xed350740,0xa0f7,0x42d3,0x8e,0xa8,0xf8,0x1b,0x64,0x88,0xfa,0xf0);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_OnePtFive, 0x0428a021,0x0397,0x4b57,0x9a,0x17,0x07,0x95,0x99,0x4c,0xd3,0xc5);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Double,    0x82fb1805,0xa6c4,0x4231,0xac,0x12,0x62,0x60,0xaf,0x2a,0xba,0x28);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_AtLeast,   0xadfedf31,0x2d44,0x4434,0xa5,0xff,0x7f,0x4c,0x49,0x90,0xa9,0x05);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Exactly,   0x3d45ad40,0x23de,0x48d7,0xa6,0xb3,0x76,0x54,0x20,0xc6,0x20,0xcc);
-DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Multiple,  0x910f1e3c,0xd6d0,0x4f65,0x8a,0x3c,0x42,0xb4,0xb3,0x18,0x68,0xc5);
-
-DEFINE_GUID(TSATTRID_List,                  0x436d673b,0x26f1,0x4aee,0x9e,0x65,0x8f,0x83,0xa4,0xed,0x48,0x84);
-DEFINE_GUID(TSATTRID_List_LevelIndel,       0x7f7cc899,0x311f,0x487b,0xad,0x5d,0xe2,0xa4,0x59,0xe1,0x2d,0x42);
-DEFINE_GUID(TSATTRID_List_Type,             0xae3e665e,0x4bce,0x49e3,0xa0,0xfe,0x2d,0xb4,0x7d,0x3a,0x17,0xae);
-DEFINE_GUID(TSATTRID_List_Type_Bullet,      0xbccd77c5,0x4c4d,0x4ce2,0xb1,0x02,0x55,0x9f,0x3b,0x2b,0xfc,0xea);
-DEFINE_GUID(TSATTRID_List_Type_Arabic,      0x1338c5d6,0x98a3,0x4fa3,0x9b,0xd1,0x7a,0x60,0xee,0xf8,0xe9,0xe0);
-DEFINE_GUID(TSATTRID_List_Type_LowerLetter, 0x96372285,0xf3cf,0x491e,0xa9,0x25,0x38,0x32,0x34,0x7f,0xd2,0x37);
-DEFINE_GUID(TSATTRID_List_Type_UpperLetter, 0x7987b7cd,0xce52,0x428b,0x9b,0x95,0xa3,0x57,0xf6,0xf1,0x0c,0x45);
-DEFINE_GUID(TSATTRID_List_Type_LowerRoman,  0x90466262,0x3980,0x4b8e,0x93,0x68,0x91,0x8b,0xd1,0x21,0x8a,0x41);
-DEFINE_GUID(TSATTRID_List_Type_UpperRoman,  0x0f6ab552,0x4a80,0x467f,0xb2,0xf1,0x12,0x7e,0x2a,0xa3,0xba,0x9e);
-
-DEFINE_GUID(TSATTRID_App,                   0xa80f77df,0x4237,0x40e5,0x84,0x9c,0xb5,0xfa,0x51,0xc1,0x3a,0xc7);
-DEFINE_GUID(TSATTRID_App_IncorrectSpelling, 0xf42de43c,0xef12,0x430d,0x94,0x4c,0x9a,0x08,0x97,0x0a,0x25,0xd2);
-DEFINE_GUID(TSATTRID_App_IncorrectGrammar,  0xbd54e398,0xad03,0x4b74,0xb6,0xb3,0x5e,0xdb,0x19,0x99,0x63,0x88);
-
-#endif
-
+/**

+ * This file has no copyright assigned and is placed in the Public Domain.

+ * This file is part of the mingw-w64 runtime package.

+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.

+ */

+

+#ifndef _TSATTRS_H_

+#define _TSATTRS_H_

+

+DEFINE_GUID(TSATTRID_OTHERS, 0xb3c32af9,0x57d0,0x46a9,0xbc,0xa8,0xda,0xc2,0x38,0xa1,0x30,0x57);

+

+DEFINE_GUID(TSATTRID_Font,                           0x573ea825,0x749b,0x4f8a,0x9c,0xfd,0x21,0xc3,0x60,0x5c,0xa8,0x28);

+DEFINE_GUID(TSATTRID_Font_FaceName,                  0xb536aeb6,0x053b,0x4eb8,0xb6,0x5a,0x50,0xda,0x1e,0x81,0xe7,0x2e);

+DEFINE_GUID(TSATTRID_Font_SizePts,                   0xc8493302,0xa5e9,0x456d,0xaf,0x04,0x80,0x05,0xe4,0x13,0x0f,0x03);

+DEFINE_GUID(TSATTRID_Font_Style,                     0x68b2a77f,0x6b0e,0x4f28,0x81,0x77,0x57,0x1c,0x2f,0x3a,0x42,0xb1);

+DEFINE_GUID(TSATTRID_Font_Style_Bold,                0x48813a43,0x8a20,0x4940,0x8e,0x58,0x97,0x82,0x3f,0x7b,0x26,0x8a);

+DEFINE_GUID(TSATTRID_Font_Style_Italic,              0x8740682a,0xa765,0x48e1,0xac,0xfc,0xd2,0x22,0x22,0xb2,0xf8,0x10);

+DEFINE_GUID(TSATTRID_Font_Style_SmallCaps,           0xfacb6bc6,0x9100,0x4cc6,0xb9,0x69,0x11,0xee,0xa4,0x5a,0x86,0xb4);

+DEFINE_GUID(TSATTRID_Font_Style_Capitalize,          0x7d85a3ba,0xb4fd,0x43b3,0xbe,0xfc,0x6b,0x98,0x5c,0x84,0x31,0x41);

+DEFINE_GUID(TSATTRID_Font_Style_Uppercase,           0x33a300e8,0xe340,0x4937,0xb6,0x97,0x8f,0x23,0x40,0x45,0xcd,0x9a);

+DEFINE_GUID(TSATTRID_Font_Style_Lowercase,           0x76d8ccb5,0xca7b,0x4498,0x8e,0xe9,0xd5,0xc4,0xf6,0xf7,0x4c,0x60);

+DEFINE_GUID(TSATTRID_Font_Style_Animation,           0xdcf73d22,0xe029,0x47b7,0xbb,0x36,0xf2,0x63,0xa3,0xd0,0x04,0xcc);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_LasVegasLights,     0xf40423d5,0x0f87,0x4f8f,0xba,0xda,0xe6,0xd6,0x0c,0x25,0xe1,0x52);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_BlinkingBackground, 0x86e5b104,0x0104,0x4b10,0xb5,0x85,0x00,0xf2,0x52,0x75,0x22,0xb5);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_SparkleText,        0x533aad20,0x962c,0x4e9f,0x8c,0x09,0xb4,0x2e,0xa4,0x74,0x97,0x11);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_MarchingBlackAnts,  0x7644e067,0xf186,0x4902,0xbf,0xc6,0xec,0x81,0x5a,0xa2,0x0e,0x9d);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_MarchingRedAnts,    0x78368dad,0x50fb,0x4c6f,0x84,0x0b,0xd4,0x86,0xbb,0x6c,0xf7,0x81);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_Shimmer,    0x2ce31b58,0x5293,0x4c36,0x88,0x09,0xbf,0x8b,0xb5,0x1a,0x27,0xb3);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_WipeDown,   0x5872e874,0x367b,0x4803,0xb1,0x60,0xc9,0x0f,0xf6,0x25,0x69,0xd0);

+DEFINE_GUID(TSATTRID_Font_Style_Animation_WipeRight,  0xb855cbe3,0x3d2c,0x4600,0xb1,0xe9,0xe1,0xc9,0xce,0x02,0xf8,0x42);

+DEFINE_GUID(TSATTRID_Font_Style_Emboss,               0xbd8ed742,0x349e,0x4e37,0x82,0xfb,0x43,0x79,0x79,0xcb,0x53,0xa7);

+DEFINE_GUID(TSATTRID_Font_Style_Engrave,              0x9c3371de,0x8332,0x4897,0xbe,0x5d,0x89,0x23,0x32,0x23,0x17,0x9a);

+DEFINE_GUID(TSATTRID_Font_Style_Hidden,               0xb1e28770,0x881c,0x475f,0x86,0x3f,0x88,0x7a,0x64,0x7b,0x10,0x90);

+DEFINE_GUID(TSATTRID_Font_Style_Kerning,              0xcc26e1b4,0x2f9a,0x47c8,0x8b,0xff,0xbf,0x1e,0xb7,0xcc,0xe0,0xdd);

+DEFINE_GUID(TSATTRID_Font_Style_Outlined,             0x10e6db31,0xdb0d,0x4ac6,0xa7,0xf5,0x9c,0x9c,0xff,0x6f,0x2a,0xb4);

+DEFINE_GUID(TSATTRID_Font_Style_Position,             0x15cd26ab,0xf2fb,0x4062,0xb5,0xa6,0x9a,0x49,0xe1,0xa5,0xcc,0x0b);

+DEFINE_GUID(TSATTRID_Font_Style_Protected,            0x1c557cb2,0x14cf,0x4554,0xa5,0x74,0xec,0xb2,0xf7,0xe7,0xef,0xd4);

+DEFINE_GUID(TSATTRID_Font_Style_Shadow,               0x5f686d2f,0xc6cd,0x4c56,0x8a,0x1a,0x99,0x4a,0x4b,0x97,0x66,0xbe);

+DEFINE_GUID(TSATTRID_Font_Style_Spacing,              0x98c1200d,0x8f06,0x409a,0x8e,0x49,0x6a,0x55,0x4b,0xf7,0xc1,0x53);

+DEFINE_GUID(TSATTRID_Font_Style_Weight,               0x12f3189c,0x8bb0,0x461b,0xb1,0xfa,0xea,0xf9,0x07,0x04,0x7f,0xe0);

+DEFINE_GUID(TSATTRID_Font_Style_Height,               0x7e937477,0x12e6,0x458b,0x92,0x6a,0x1f,0xa4,0x4e,0xe8,0xf3,0x91);

+DEFINE_GUID(TSATTRID_Font_Style_Underline,            0xc3c9c9f3,0x7902,0x444b,0x9a,0x7b,0x48,0xe7,0x0f,0x4b,0x50,0xf7);

+DEFINE_GUID(TSATTRID_Font_Style_Underline_Single,     0x1b6720e5,0x0f73,0x4951,0xa6,0xb3,0x6f,0x19,0xe4,0x3c,0x94,0x61);

+DEFINE_GUID(TSATTRID_Font_Style_Underline_Double,     0x74d24aa6,0x1db3,0x4c69,0xa1,0x76,0x31,0x12,0x0e,0x75,0x86,0xd5);

+DEFINE_GUID(TSATTRID_Font_Style_Strikethrough,        0x0c562193,0x2d08,0x4668,0x96,0x01,0xce,0xd4,0x13,0x09,0xd7,0xaf);

+DEFINE_GUID(TSATTRID_Font_Style_Strikethrough_Single, 0x75d736b6,0x3c8f,0x4b97,0xab,0x78,0x18,0x77,0xcb,0x99,0x0d,0x31);

+DEFINE_GUID(TSATTRID_Font_Style_Strikethrough_Double, 0x62489b31,0xa3e7,0x4f94,0xac,0x43,0xeb,0xaf,0x8f,0xcc,0x7a,0x9f);

+DEFINE_GUID(TSATTRID_Font_Style_Overline,             0xe3989f4a,0x992b,0x4301,0x8c,0xe1,0xa5,0xb7,0xc6,0xd1,0xf3,0xc8);

+DEFINE_GUID(TSATTRID_Font_Style_Overline_Single,      0x8440d94c,0x51ce,0x47b2,0x8d,0x4c,0x15,0x75,0x1e,0x5f,0x72,0x1b);

+DEFINE_GUID(TSATTRID_Font_Style_Overline_Double,      0xdc46063a,0xe115,0x46e3,0xbc,0xd8,0xca,0x67,0x72,0xaa,0x95,0xb4);

+DEFINE_GUID(TSATTRID_Font_Style_Blink,                0xbfb2c036,0x7acf,0x4532,0xb7,0x20,0xb4,0x16,0xdd,0x77,0x65,0xa8);

+DEFINE_GUID(TSATTRID_Font_Style_Subscript,            0x5774fb84,0x389b,0x43bc,0xa7,0x4b,0x15,0x68,0x34,0x7c,0xf0,0xf4);

+DEFINE_GUID(TSATTRID_Font_Style_Superscript,          0x2ea4993c,0x563c,0x49aa,0x93,0x72,0x0b,0xef,0x09,0xa9,0x25,0x5b);

+DEFINE_GUID(TSATTRID_Font_Style_Color,                0x857a7a37,0xb8af,0x4e9a,0x81,0xb4,0xac,0xf7,0x00,0xc8,0x41,0x1b);

+DEFINE_GUID(TSATTRID_Font_Style_BackgroundColor,      0xb50eaa4e,0x3091,0x4468,0x81,0xdb,0xd7,0x9e,0xa1,0x90,0xc7,0xc7);

+

+DEFINE_GUID(TSATTRID_Text,                            0x7edb8e68,0x81f9,0x449d,0xa1,0x5a,0x87,0xa8,0x38,0x8f,0xaa,0xc0);

+DEFINE_GUID(TSATTRID_Text_VerticalWriting,            0x6bba8195,0x046f,0x4ea9,0xb3,0x11,0x97,0xfd,0x66,0xc4,0x27,0x4b);

+DEFINE_GUID(TSATTRID_Text_RightToLeft,                0xca666e71,0x1b08,0x453d,0xbf,0xdd,0x28,0xe0,0x8c,0x8a,0xaf,0x7a);

+DEFINE_GUID(TSATTRID_Text_Orientation,                0x6bab707f,0x8785,0x4c39,0x8b,0x52,0x96,0xf8,0x78,0x30,0x3f,0xfb);

+DEFINE_GUID(TSATTRID_Text_Language,                   0xd8c04ef1,0x5753,0x4c25,0x88,0x87,0x85,0x44,0x3f,0xe5,0xf8,0x19);

+DEFINE_GUID(TSATTRID_Text_ReadOnly,                   0x85836617,0xde32,0x4afd,0xa5,0x0f,0xa2,0xdb,0x11,0x0e,0x6e,0x4d);

+DEFINE_GUID(TSATTRID_Text_EmbeddedObject,             0x7edb8e68,0x81f9,0x449d,0xa1,0x5a,0x87,0xa8,0x38,0x8f,0xaa,0xc0);

+DEFINE_GUID(TSATTRID_Text_Alignment,                  0x139941e6,0x1767,0x456d,0x93,0x8e,0x35,0xba,0x56,0x8b,0x5c,0xd4);

+DEFINE_GUID(TSATTRID_Text_Alignment_Left,             0x16ae95d3,0x6361,0x43a2,0x84,0x95,0xd0,0x0f,0x39,0x7f,0x16,0x93);

+DEFINE_GUID(TSATTRID_Text_Alignment_Right,            0xb36f0f98,0x1b9e,0x4360,0x86,0x16,0x03,0xfb,0x08,0xa7,0x84,0x56);

+DEFINE_GUID(TSATTRID_Text_Alignment_Center,           0xa4a95c16,0x53bf,0x4d55,0x8b,0x87,0x4b,0xdd,0x8d,0x42,0x75,0xfc);

+DEFINE_GUID(TSATTRID_Text_Alignment_Justify,          0xed350740,0xa0f7,0x42d3,0x8e,0xa8,0xf8,0x1b,0x64,0x88,0xfa,0xf0);

+DEFINE_GUID(TSATTRID_Text_Link,                       0x47cd9051,0x3722,0x4cd8,0xb7,0xc8,0x4e,0x17,0xca,0x17,0x59,0xf5);

+DEFINE_GUID(TSATTRID_Text_Hyphenation,                0xdadf4525,0x618e,0x49eb,0xb1,0xa8,0x3b,0x68,0xbd,0x76,0x48,0xe3);

+DEFINE_GUID(TSATTRID_Text_Para,                       0x5edc5822,0x99dc,0x4dd6,0xae,0xc3,0xb6,0x2b,0xaa,0x5b,0x2e,0x7c);

+DEFINE_GUID(TSATTRID_Text_Para_FirstLineIndent,       0x07c97a13,0x7472,0x4dd8,0x90,0xa9,0x91,0xe3,0xd7,0xe4,0xf2,0x9c);

+DEFINE_GUID(TSATTRID_Text_Para_LeftIndent,            0xfb2848e9,0x7471,0x41c9,0xb6,0xb3,0x8a,0x14,0x50,0xe0,0x18,0x97);

+DEFINE_GUID(TSATTRID_Text_Para_RightIndent,           0x2c7f26f9,0xa5e2,0x48da,0xb9,0x8a,0x52,0x0c,0xb1,0x65,0x13,0xbf);

+DEFINE_GUID(TSATTRID_Text_Para_SpaceAfter,            0x7b0a3f55,0x22dc,0x425f,0xa4,0x11,0x93,0xda,0x1d,0x8f,0x9b,0xaa);

+DEFINE_GUID(TSATTRID_Text_Para_SpaceBefore,           0x8df98589,0x194a,0x4601,0xb2,0x51,0x98,0x65,0xa3,0xe9,0x06,0xdd);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing,           0x699b380d,0x7f8c,0x46d6,0xa7,0x3b,0xdf,0xe3,0xd1,0x53,0x8d,0xf3);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Single,    0xed350740,0xa0f7,0x42d3,0x8e,0xa8,0xf8,0x1b,0x64,0x88,0xfa,0xf0);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_OnePtFive, 0x0428a021,0x0397,0x4b57,0x9a,0x17,0x07,0x95,0x99,0x4c,0xd3,0xc5);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Double,    0x82fb1805,0xa6c4,0x4231,0xac,0x12,0x62,0x60,0xaf,0x2a,0xba,0x28);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_AtLeast,   0xadfedf31,0x2d44,0x4434,0xa5,0xff,0x7f,0x4c,0x49,0x90,0xa9,0x05);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Exactly,   0x3d45ad40,0x23de,0x48d7,0xa6,0xb3,0x76,0x54,0x20,0xc6,0x20,0xcc);

+DEFINE_GUID(TSATTRID_Text_Para_LineSpacing_Multiple,  0x910f1e3c,0xd6d0,0x4f65,0x8a,0x3c,0x42,0xb4,0xb3,0x18,0x68,0xc5);

+

+DEFINE_GUID(TSATTRID_List,                  0x436d673b,0x26f1,0x4aee,0x9e,0x65,0x8f,0x83,0xa4,0xed,0x48,0x84);

+DEFINE_GUID(TSATTRID_List_LevelIndel,       0x7f7cc899,0x311f,0x487b,0xad,0x5d,0xe2,0xa4,0x59,0xe1,0x2d,0x42);

+DEFINE_GUID(TSATTRID_List_Type,             0xae3e665e,0x4bce,0x49e3,0xa0,0xfe,0x2d,0xb4,0x7d,0x3a,0x17,0xae);

+DEFINE_GUID(TSATTRID_List_Type_Bullet,      0xbccd77c5,0x4c4d,0x4ce2,0xb1,0x02,0x55,0x9f,0x3b,0x2b,0xfc,0xea);

+DEFINE_GUID(TSATTRID_List_Type_Arabic,      0x1338c5d6,0x98a3,0x4fa3,0x9b,0xd1,0x7a,0x60,0xee,0xf8,0xe9,0xe0);

+DEFINE_GUID(TSATTRID_List_Type_LowerLetter, 0x96372285,0xf3cf,0x491e,0xa9,0x25,0x38,0x32,0x34,0x7f,0xd2,0x37);

+DEFINE_GUID(TSATTRID_List_Type_UpperLetter, 0x7987b7cd,0xce52,0x428b,0x9b,0x95,0xa3,0x57,0xf6,0xf1,0x0c,0x45);

+DEFINE_GUID(TSATTRID_List_Type_LowerRoman,  0x90466262,0x3980,0x4b8e,0x93,0x68,0x91,0x8b,0xd1,0x21,0x8a,0x41);

+DEFINE_GUID(TSATTRID_List_Type_UpperRoman,  0x0f6ab552,0x4a80,0x467f,0xb2,0xf1,0x12,0x7e,0x2a,0xa3,0xba,0x9e);

+

+DEFINE_GUID(TSATTRID_App,                   0xa80f77df,0x4237,0x40e5,0x84,0x9c,0xb5,0xfa,0x51,0xc1,0x3a,0xc7);

+DEFINE_GUID(TSATTRID_App_IncorrectSpelling, 0xf42de43c,0xef12,0x430d,0x94,0x4c,0x9a,0x08,0x97,0x0a,0x25,0xd2);

+DEFINE_GUID(TSATTRID_App_IncorrectGrammar,  0xbd54e398,0xad03,0x4b74,0xb6,0xb3,0x5e,0xdb,0x19,0x99,0x63,0x88);

+

+#endif

+

diff --git a/x86_64-w64-mingw32/include/tuner.h b/x86_64-w64-mingw32/include/tuner.h
index c6efe1d..e29ccce 100644
--- a/x86_64-w64-mingw32/include/tuner.h
+++ b/x86_64-w64-mingw32/include/tuner.h
@@ -1,1184 +1,20119 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef __INC_TUNER__
-#define __INC_TUNER__
-#include <objbase.h>
-#include <comcat.h>
-#include <dshow.h>
-#include <bdatypes.h>
-#include <bdaiface.h>
+/*** Autogenerated by WIDL 1.6 from include/tuner.idl - Do not edit ***/
 
-#ifndef __IBDACreateTuneRequestEx_FWD_DEFINED__
-#define __IBDACreateTuneRequestEx_FWD_DEFINED__
-typedef struct IBDACreateTuneRequestEx IBDACreateTuneRequestEx;
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
 
-#ifndef __ITuneRequest_FWD_DEFINED__
-#define __ITuneRequest_FWD_DEFINED__
-typedef struct ITuneRequest ITuneRequest;
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
 #endif
 
-#ifndef __IChannelIDTuneRequest_FWD_DEFINED__
-#define __IChannelIDTuneRequest_FWD_DEFINED__
-typedef struct IChannelIDTuneRequest IChannelIDTuneRequest;
+#ifndef __tuner_h__
+#define __tuner_h__
+
+/* Forward declarations */
+
+#ifndef __ITuningSpaces_FWD_DEFINED__
+#define __ITuningSpaces_FWD_DEFINED__
+typedef interface ITuningSpaces ITuningSpaces;
 #endif
 
-#ifndef __ILocator_FWD_DEFINED__
-#define __ILocator_FWD_DEFINED__
-typedef struct ILocator ILocator;
-#endif
-
-#ifndef __IDigitalLocator_FWD_DEFINED__
-#define __IDigitalLocator_FWD_DEFINED__
-typedef struct IDigitalLocator IDigitalLocator;
-#endif
-
-#ifndef __IDVBSLocator_FWD_DEFINED__
-#define __IDVBSLocator_FWD_DEFINED__
-typedef struct IDVBSLocator IDVBSLocator;
-#endif
-
-#ifndef __IDVBSLocator2_FWD_DEFINED__
-#define __IDVBSLocator2_FWD_DEFINED__
-typedef struct IDVBSLocator2 IDVBSLocator2;
-#endif
-
-#ifndef __IDVBTLocator_FWD_DEFINED__
-#define __IDVBTLocator_FWD_DEFINED__
-typedef struct IDVBTLocator IDVBTLocator;
-#endif
-
-#ifndef __IDVBTLocator_FWD_DEFINED__
-#define __IDVBTLocator_FWD_DEFINED__
-typedef struct IDVBTLocator2 IDVBTLocator2;
-#endif
-
-#ifndef __IComponents_FWD_DEFINED__
-#define __IComponents_FWD_DEFINED__
-typedef struct IComponents IComponents;
-#endif
-
-#ifndef __IEnumComponents_FWD_DEFINED__
-#define __IEnumComponents_FWD_DEFINED__
-typedef struct IEnumComponents IEnumComponents;
-#endif
-
-#ifndef __IComponent_FWD_DEFINED__
-#define __IComponent_FWD_DEFINED__
-typedef struct IComponent IComponent;
-#endif
-
-#ifndef __IMPEG2Component_FWD_DEFINED__
-#define __IMPEG2Component_FWD_DEFINED__
-typedef struct IMPEG2Component IMPEG2Component;
+#ifndef __ITuningSpaceContainer_FWD_DEFINED__
+#define __ITuningSpaceContainer_FWD_DEFINED__
+typedef interface ITuningSpaceContainer ITuningSpaceContainer;
 #endif
 
 #ifndef __ITuningSpace_FWD_DEFINED__
 #define __ITuningSpace_FWD_DEFINED__
-typedef struct ITuningSpace ITuningSpace;
+typedef interface ITuningSpace ITuningSpace;
 #endif
 
-#ifndef __IComponentTypes_FWD_DEFINED__
-#define __IComponentTypes_FWD_DEFINED__
-typedef struct IComponentTypes IComponentTypes;
+#ifndef __IEnumTuningSpaces_FWD_DEFINED__
+#define __IEnumTuningSpaces_FWD_DEFINED__
+typedef interface IEnumTuningSpaces IEnumTuningSpaces;
+#endif
+
+#ifndef __IDVBTuningSpace_FWD_DEFINED__
+#define __IDVBTuningSpace_FWD_DEFINED__
+typedef interface IDVBTuningSpace IDVBTuningSpace;
+#endif
+
+#ifndef __IDVBTuningSpace2_FWD_DEFINED__
+#define __IDVBTuningSpace2_FWD_DEFINED__
+typedef interface IDVBTuningSpace2 IDVBTuningSpace2;
+#endif
+
+#ifndef __IDVBSTuningSpace_FWD_DEFINED__
+#define __IDVBSTuningSpace_FWD_DEFINED__
+typedef interface IDVBSTuningSpace IDVBSTuningSpace;
+#endif
+
+#ifndef __IAuxInTuningSpace_FWD_DEFINED__
+#define __IAuxInTuningSpace_FWD_DEFINED__
+typedef interface IAuxInTuningSpace IAuxInTuningSpace;
+#endif
+
+#ifndef __IAuxInTuningSpace2_FWD_DEFINED__
+#define __IAuxInTuningSpace2_FWD_DEFINED__
+typedef interface IAuxInTuningSpace2 IAuxInTuningSpace2;
+#endif
+
+#ifndef __IAnalogTVTuningSpace_FWD_DEFINED__
+#define __IAnalogTVTuningSpace_FWD_DEFINED__
+typedef interface IAnalogTVTuningSpace IAnalogTVTuningSpace;
+#endif
+
+#ifndef __IATSCTuningSpace_FWD_DEFINED__
+#define __IATSCTuningSpace_FWD_DEFINED__
+typedef interface IATSCTuningSpace IATSCTuningSpace;
+#endif
+
+#ifndef __IDigitalCableTuningSpace_FWD_DEFINED__
+#define __IDigitalCableTuningSpace_FWD_DEFINED__
+typedef interface IDigitalCableTuningSpace IDigitalCableTuningSpace;
+#endif
+
+#ifndef __IAnalogRadioTuningSpace_FWD_DEFINED__
+#define __IAnalogRadioTuningSpace_FWD_DEFINED__
+typedef interface IAnalogRadioTuningSpace IAnalogRadioTuningSpace;
+#endif
+
+#ifndef __IAnalogRadioTuningSpace2_FWD_DEFINED__
+#define __IAnalogRadioTuningSpace2_FWD_DEFINED__
+typedef interface IAnalogRadioTuningSpace2 IAnalogRadioTuningSpace2;
+#endif
+
+#ifndef __ITuneRequest_FWD_DEFINED__
+#define __ITuneRequest_FWD_DEFINED__
+typedef interface ITuneRequest ITuneRequest;
+#endif
+
+#ifndef __IChannelIDTuneRequest_FWD_DEFINED__
+#define __IChannelIDTuneRequest_FWD_DEFINED__
+typedef interface IChannelIDTuneRequest IChannelIDTuneRequest;
+#endif
+
+#ifndef __IChannelTuneRequest_FWD_DEFINED__
+#define __IChannelTuneRequest_FWD_DEFINED__
+typedef interface IChannelTuneRequest IChannelTuneRequest;
+#endif
+
+#ifndef __IATSCChannelTuneRequest_FWD_DEFINED__
+#define __IATSCChannelTuneRequest_FWD_DEFINED__
+typedef interface IATSCChannelTuneRequest IATSCChannelTuneRequest;
+#endif
+
+#ifndef __IDigitalCableTuneRequest_FWD_DEFINED__
+#define __IDigitalCableTuneRequest_FWD_DEFINED__
+typedef interface IDigitalCableTuneRequest IDigitalCableTuneRequest;
+#endif
+
+#ifndef __IDVBTuneRequest_FWD_DEFINED__
+#define __IDVBTuneRequest_FWD_DEFINED__
+typedef interface IDVBTuneRequest IDVBTuneRequest;
+#endif
+
+#ifndef __IMPEG2TuneRequest_FWD_DEFINED__
+#define __IMPEG2TuneRequest_FWD_DEFINED__
+typedef interface IMPEG2TuneRequest IMPEG2TuneRequest;
+#endif
+
+#ifndef __IMPEG2TuneRequestFactory_FWD_DEFINED__
+#define __IMPEG2TuneRequestFactory_FWD_DEFINED__
+typedef interface IMPEG2TuneRequestFactory IMPEG2TuneRequestFactory;
+#endif
+
+#ifndef __IMPEG2TuneRequestSupport_FWD_DEFINED__
+#define __IMPEG2TuneRequestSupport_FWD_DEFINED__
+typedef interface IMPEG2TuneRequestSupport IMPEG2TuneRequestSupport;
+#endif
+
+#ifndef __ITunerCap_FWD_DEFINED__
+#define __ITunerCap_FWD_DEFINED__
+typedef interface ITunerCap ITunerCap;
+#endif
+
+#ifndef __ITunerCapEx_FWD_DEFINED__
+#define __ITunerCapEx_FWD_DEFINED__
+typedef interface ITunerCapEx ITunerCapEx;
+#endif
+
+#ifndef __ITuner_FWD_DEFINED__
+#define __ITuner_FWD_DEFINED__
+typedef interface ITuner ITuner;
+#endif
+
+#ifndef __IScanningTuner_FWD_DEFINED__
+#define __IScanningTuner_FWD_DEFINED__
+typedef interface IScanningTuner IScanningTuner;
+#endif
+
+#ifndef __IScanningTunerEx_FWD_DEFINED__
+#define __IScanningTunerEx_FWD_DEFINED__
+typedef interface IScanningTunerEx IScanningTunerEx;
 #endif
 
 #ifndef __IComponentType_FWD_DEFINED__
 #define __IComponentType_FWD_DEFINED__
-typedef struct IComponentType IComponentType;
+typedef interface IComponentType IComponentType;
+#endif
+
+#ifndef __ILanguageComponentType_FWD_DEFINED__
+#define __ILanguageComponentType_FWD_DEFINED__
+typedef interface ILanguageComponentType ILanguageComponentType;
+#endif
+
+#ifndef __IMPEG2ComponentType_FWD_DEFINED__
+#define __IMPEG2ComponentType_FWD_DEFINED__
+typedef interface IMPEG2ComponentType IMPEG2ComponentType;
+#endif
+
+#ifndef __IATSCComponentType_FWD_DEFINED__
+#define __IATSCComponentType_FWD_DEFINED__
+typedef interface IATSCComponentType IATSCComponentType;
 #endif
 
 #ifndef __IEnumComponentTypes_FWD_DEFINED__
 #define __IEnumComponentTypes_FWD_DEFINED__
-typedef struct IEnumComponentTypes IEnumComponentTypes;
+typedef interface IEnumComponentTypes IEnumComponentTypes;
 #endif
 
-#undef  INTERFACE
-#define INTERFACE IBDACreateTuneRequestEx
-DECLARE_INTERFACE_(IBDACreateTuneRequestEx,IUnknown)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IBDACreateTuneRequestEx methods */
-    STDMETHOD_(HRESULT,CreateTuneRequestEx)(THIS_ REFCLSID TuneRequestIID,ITuneRequest **ppTuneRequest) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IBDACreateTuneRequestEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IBDACreateTuneRequestEx_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IBDACreateTuneRequestEx_Release(This) (This)->lpVtbl->Release(This)
-#define IBDACreateTuneRequestEx_CreateTuneRequestEx(This,TuneRequestIID,ppTuneRequest) (This)->lpVtbl->CreateTuneRequestEx(This,TuneRequestIID,ppTuneRequest)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE ITuneRequest
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IComponentTypes_FWD_DEFINED__
+#define __IComponentTypes_FWD_DEFINED__
+typedef interface IComponentTypes IComponentTypes;
 #endif
-DECLARE_INTERFACE_(ITuneRequest,IDispatch)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ITuneRequest methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ITuneRequest **ppNewTuneRequest) PURE;
-    STDMETHOD_(HRESULT,get_Components)(THIS_ IComponents **ppComponents) PURE;
-    STDMETHOD_(HRESULT,get_Locator)(THIS_ ILocator **ppLocator) PURE;
-    STDMETHOD_(HRESULT,get_TuningSpace)(THIS_ ITuningSpace **ppTuningSpace) PURE;
-    STDMETHOD_(HRESULT,put_Locator)(THIS_ ILocator *pLocator) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define ITuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ITuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ITuneRequest_Release(This) (This)->lpVtbl->Release(This)
-#define ITuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ITuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ITuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ITuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ITuneRequest_Clone(This,ppNewTuneRequest) (This)->lpVtbl->Clone(This,ppNewTuneRequest)
-#define ITuneRequest_get_Components(This,ppComponents) (This)->lpVtbl->get_Components(This,ppComponents)
-#define ITuneRequest_get_Locator(This,ppLocator) (This)->lpVtbl->get_Locator(This,ppLocator)
-#define ITuneRequest_get_TuningSpace(This,ppTuningSpace) (This)->lpVtbl->get_TuningSpace(This,ppTuningSpace)
-#define ITuneRequest_put_Locator(This,pLocator) (This)->lpVtbl->put_Locator(This,pLocator)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IChannelIDTuneRequest
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IComponent_FWD_DEFINED__
+#define __IComponent_FWD_DEFINED__
+typedef interface IComponent IComponent;
 #endif
-DECLARE_INTERFACE_(IChannelIDTuneRequest,ITuneRequest)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IChannelIDTuneRequest methods */
-    STDMETHOD_(HRESULT,put_ChannelID)(THIS_ BSTR ChannelID) PURE;
-    STDMETHOD_(HRESULT,get_ChannelID)(THIS_ BSTR *ChannelID) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IChannelIDTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IChannelIDTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IChannelIDTuneRequest_Release(This) (This)->lpVtbl->Release(This)
-#define IChannelIDTuneRequest_put_ChannelID(This,ChannelID) (This)->lpVtbl->put_ChannelID(This,ChannelID)
-#define IChannelIDTuneRequest_get_ChannelID(This,ChannelID) (This)->lpVtbl->get_ChannelID(This,ChannelID)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE ILocator
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IAnalogAudioComponentType_FWD_DEFINED__
+#define __IAnalogAudioComponentType_FWD_DEFINED__
+typedef interface IAnalogAudioComponentType IAnalogAudioComponentType;
 #endif
-DECLARE_INTERFACE_(ILocator,IDispatch)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define ILocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ILocator_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ILocator_Release(This) (This)->lpVtbl->Release(This)
-#define ILocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ILocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ILocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ILocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ILocator_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define ILocator_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define ILocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define ILocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define ILocator_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define ILocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define ILocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define ILocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define ILocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define ILocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define ILocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define ILocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define ILocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define ILocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define ILocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IDigitalLocator
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IMPEG2Component_FWD_DEFINED__
+#define __IMPEG2Component_FWD_DEFINED__
+typedef interface IMPEG2Component IMPEG2Component;
 #endif
-DECLARE_INTERFACE_(IDigitalLocator,ILocator)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    /* IDigitalLocator methods */
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IDigitalLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IDigitalLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IDigitalLocator_Release(This) (This)->lpVtbl->Release(This)
-#define IDigitalLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IDigitalLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IDigitalLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IDigitalLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IDigitalLocator_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define IDigitalLocator_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define IDigitalLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define IDigitalLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define IDigitalLocator_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define IDigitalLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define IDigitalLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define IDigitalLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define IDigitalLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define IDigitalLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define IDigitalLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define IDigitalLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define IDigitalLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define IDigitalLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define IDigitalLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IDVBSLocator
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IEnumComponents_FWD_DEFINED__
+#define __IEnumComponents_FWD_DEFINED__
+typedef interface IEnumComponents IEnumComponents;
 #endif
-DECLARE_INTERFACE_(IDVBSLocator,IDigitalLocator)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    /* IDigitalLocator methods */
-
-    /* IDVBSLocator methods */
-    STDMETHOD_(HRESULT,get_Azimuth)(THIS_ __LONG32 *pAzimuth) PURE;
-    STDMETHOD_(HRESULT,get_Elevation)(THIS_ __LONG32 *pElevation) PURE;
-    STDMETHOD_(HRESULT,get_OrbitalPosition)(THIS_ __LONG32 *plongitude) PURE;
-    STDMETHOD_(HRESULT,get_SignalPolarisation)(THIS_ Polarisation *pPolarisationVal) PURE;
-    STDMETHOD_(HRESULT,get_WestPosition)(THIS_ VARIANT_BOOL *pWestLongitude) PURE;
-    STDMETHOD_(HRESULT,put_Azimuth)(THIS_ __LONG32 Azimuth) PURE;
-    STDMETHOD_(HRESULT,put_Elevation)(THIS_ __LONG32 Elevation) PURE;
-    STDMETHOD_(HRESULT,put_OrbitalPosition)(THIS_ __LONG32 longitude) PURE;
-    STDMETHOD_(HRESULT,put_SignalPolarisation)(THIS_ Polarisation PolarisationVal) PURE;
-    STDMETHOD_(HRESULT,put_WestPosition)(THIS_ VARIANT_BOOL WestLongitude) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IDVBSLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IDVBSLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IDVBSLocator_Release(This) (This)->lpVtbl->Release(This)
-#define IDVBSLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IDVBSLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IDVBSLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IDVBSLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IDVBSLocator_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define IDVBSLocator_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define IDVBSLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define IDVBSLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define IDVBSLocator_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define IDVBSLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define IDVBSLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define IDVBSLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define IDVBSLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define IDVBSLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define IDVBSLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define IDVBSLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define IDVBSLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define IDVBSLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define IDVBSLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#define IDVBSLocator_get_Azimuth(This,pAzimuth) (This)->lpVtbl->get_Azimuth(This,pAzimuth)
-#define IDVBSLocator_get_Elevation(This,pElevation) (This)->lpVtbl->get_Elevation(This,pElevation)
-#define IDVBSLocator_get_OrbitalPosition(This,plongitude) (This)->lpVtbl->get_OrbitalPosition(This,plongitude)
-#define IDVBSLocator_get_SignalPolarisation(This,pPolarisationVal) (This)->lpVtbl->get_SignalPolarisation(This,pPolarisationVal)
-#define IDVBSLocator_get_WestPosition(This,pWestLongitude) (This)->lpVtbl->get_WestPosition(This,pWestLongitude)
-#define IDVBSLocator_put_Azimuth(This,Azimuth) (This)->lpVtbl->put_Azimuth(This,Azimuth)
-#define IDVBSLocator_put_Elevation(This,Elevation) (This)->lpVtbl->put_Elevation(This,Elevation)
-#define IDVBSLocator_put_OrbitalPosition(This,longitude) (This)->lpVtbl->put_OrbitalPosition(This,longitude)
-#define IDVBSLocator_put_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->put_SignalPolarisation(This,PolarisationVal)
-#define IDVBSLocator_put_WestPosition(This,WestLongitude) (This)->lpVtbl->put_WestPosition(This,WestLongitude)
-#endif /*COBJMACROS*/
-
-#if (_WIN32_WINNT >= 0x0601)
-
-#undef  INTERFACE
-#define INTERFACE IDVBSLocator2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IComponents_FWD_DEFINED__
+#define __IComponents_FWD_DEFINED__
+typedef interface IComponents IComponents;
 #endif
-DECLARE_INTERFACE_(IDVBSLocator2,IDVBSLocator)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    /* IDigitalLocator methods */
-
-    /* IDVBSLocator methods */
-    STDMETHOD_(HRESULT,get_Azimuth)(THIS_ __LONG32 *pAzimuth) PURE;
-    STDMETHOD_(HRESULT,get_Elevation)(THIS_ __LONG32 *pElevation) PURE;
-    STDMETHOD_(HRESULT,get_OrbitalPosition)(THIS_ __LONG32 *plongitude) PURE;
-    STDMETHOD_(HRESULT,get_SignalPolarisation)(THIS_ Polarisation *pPolarisationVal) PURE;
-    STDMETHOD_(HRESULT,get_WestPosition)(THIS_ VARIANT_BOOL *pWestLongitude) PURE;
-    STDMETHOD_(HRESULT,put_Azimuth)(THIS_ __LONG32 Azimuth) PURE;
-    STDMETHOD_(HRESULT,put_Elevation)(THIS_ __LONG32 Elevation) PURE;
-    STDMETHOD_(HRESULT,put_OrbitalPosition)(THIS_ __LONG32 longitude) PURE;
-    STDMETHOD_(HRESULT,put_SignalPolarisation)(THIS_ Polarisation PolarisationVal) PURE;
-    STDMETHOD_(HRESULT,put_WestPosition)(THIS_ VARIANT_BOOL WestLongitude) PURE;
-
-    /* IDVBSLocator2 methods */
-    STDMETHOD_(HRESULT,put_DiseqLNBSource)(THIS_ LNB_Source DiseqLNBSourceVal) PURE;
-    STDMETHOD_(HRESULT,get_DiseqLNBSource)(THIS_ LNB_Source *DiseqLNBSourceVal) PURE;
-    STDMETHOD_(HRESULT,put_LocalLNBSwitchOverride)(THIS_ __LONG32 LocalLNBSwitchOverrideVal) PURE;
-    STDMETHOD_(HRESULT,get_LocalLNBSwitchOverride)(THIS_ __LONG32 *LocalLNBSwitchOverrideVal) PURE;
-    STDMETHOD_(HRESULT,put_LocalOscillatorOverrideHigh)(THIS_ __LONG32 LocalOscillatorOverrideHighVal) PURE;
-    STDMETHOD_(HRESULT,get_LocalOscillatorOverrideHigh)(THIS_ __LONG32 *LocalOscillatorOverrideHighVal) PURE;
-    STDMETHOD_(HRESULT,put_LocalOscillatorOverrideLow)(THIS_ __LONG32 LocalOscillatorOverrideLowVal) PURE;
-    STDMETHOD_(HRESULT,get_LocalOscillatorOverrideLow)(THIS_ __LONG32 *LocalOscillatorOverrideLowVal) PURE;
-    STDMETHOD_(HRESULT,put_LocalSpectralInversionOverride)(THIS_ SpectralInversion LocalSpectralInversionOverrideVal) PURE;
-    STDMETHOD_(HRESULT,get_LocalSpectralInversionOverride)(THIS_ SpectralInversion *LocalSpectralInversionOverrideVal) PURE;
-    STDMETHOD_(HRESULT,put_SignalPilot)(THIS_ Pilot PilotVal) PURE;
-    STDMETHOD_(HRESULT,get_SignalPilot)(THIS_ Pilot *PilotVal) PURE;
-    STDMETHOD_(HRESULT,put_SignalRollOff)(THIS_ RollOff RollOffVal) PURE;
-    STDMETHOD_(HRESULT,get_SignalRollOff)(THIS_ RollOff *RollOffVal) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IDVBSLocator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IDVBSLocator2_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IDVBSLocator2_Release(This) (This)->lpVtbl->Release(This)
-#define IDVBSLocator2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IDVBSLocator2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IDVBSLocator2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IDVBSLocator2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IDVBSLocator2_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define IDVBSLocator2_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define IDVBSLocator2_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define IDVBSLocator2_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define IDVBSLocator2_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define IDVBSLocator2_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define IDVBSLocator2_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define IDVBSLocator2_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define IDVBSLocator2_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define IDVBSLocator2_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define IDVBSLocator2_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define IDVBSLocator2_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define IDVBSLocator2_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define IDVBSLocator2_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define IDVBSLocator2_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#define IDVBSLocator2_get_Azimuth(This,pAzimuth) (This)->lpVtbl->get_Azimuth(This,pAzimuth)
-#define IDVBSLocator2_get_Elevation(This,pElevation) (This)->lpVtbl->get_Elevation(This,pElevation)
-#define IDVBSLocator2_get_OrbitalPosition(This,plongitude) (This)->lpVtbl->get_OrbitalPosition(This,plongitude)
-#define IDVBSLocator2_get_SignalPolarisation(This,pPolarisationVal) (This)->lpVtbl->get_SignalPolarisation(This,pPolarisationVal)
-#define IDVBSLocator2_get_WestPosition(This,pWestLongitude) (This)->lpVtbl->get_WestPosition(This,pWestLongitude)
-#define IDVBSLocator2_put_Azimuth(This,Azimuth) (This)->lpVtbl->put_Azimuth(This,Azimuth)
-#define IDVBSLocator2_put_Elevation(This,Elevation) (This)->lpVtbl->put_Elevation(This,Elevation)
-#define IDVBSLocator2_put_OrbitalPosition(This,longitude) (This)->lpVtbl->put_OrbitalPosition(This,longitude)
-#define IDVBSLocator2_put_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->put_SignalPolarisation(This,PolarisationVal)
-#define IDVBSLocator2_put_WestPosition(This,WestLongitude) (This)->lpVtbl->put_WestPosition(This,WestLongitude)
-#define IDVBSLocator2_put_DiseqLNBSource(This,DiseqLNBSourceVal) (This)->lpVtbl->put_DiseqLNBSource(This,DiseqLNBSourceVal)
-#define IDVBSLocator2_get_DiseqLNBSource(This,DiseqLNBSourceVal) (This)->lpVtbl->get_DiseqLNBSource(This,DiseqLNBSourceVal)
-#define IDVBSLocator2_put_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal) (This)->lpVtbl->put_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal)
-#define IDVBSLocator2_get_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal) (This)->lpVtbl->get_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal)
-#define IDVBSLocator2_put_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal) (This)->lpVtbl->put_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal)
-#define IDVBSLocator2_get_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal) (This)->lpVtbl->get_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal)
-#define IDVBSLocator2_put_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal) (This)->lpVtbl->put_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal)
-#define IDVBSLocator2_get_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal) (This)->lpVtbl->get_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal)
-#define IDVBSLocator2_put_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal) (This)->lpVtbl->put_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal)
-#define IDVBSLocator2_get_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal) (This)->lpVtbl->get_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal)
-#define IDVBSLocator2_put_SignalPilot(This,PilotVal) (This)->lpVtbl->put_SignalPilot(This,PilotVal)
-#define IDVBSLocator2_get_SignalPilot(This,PilotVal) (This)->lpVtbl->get_SignalPilot(This,PilotVal)
-#define IDVBSLocator2_put_SignalRollOff(This,RollOffVal) (This)->lpVtbl->put_SignalRollOff(This,RollOffVal)
-#define IDVBSLocator2_get_SignalRollOff(This,RollOffVal) (This)->lpVtbl->get_SignalRollOff(This,RollOffVal)
-#endif /*COBJMACROS*/
-
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-
-#undef  INTERFACE
-#define INTERFACE IDVBTLocator
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IComponentsOld_FWD_DEFINED__
+#define __IComponentsOld_FWD_DEFINED__
+typedef interface IComponentsOld IComponentsOld;
 #endif
-DECLARE_INTERFACE_(IDVBTLocator,IDigitalLocator)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    /* IDigitalLocator methods */
-
-    /* IDVBTLocator methods */
-    STDMETHOD_(HRESULT,get_Bandwidth)(THIS_ __LONG32 *pBandWidthVal) PURE;
-    STDMETHOD_(HRESULT,get_Guard)(THIS_ GuardInterval *pGI) PURE;
-    STDMETHOD_(HRESULT,get_HAlpha)(THIS_ HierarchyAlpha *pAlpha) PURE;
-    STDMETHOD_(HRESULT,get_LPInnerFEC)(THIS_ FECMethod *pFEC) PURE;
-    STDMETHOD_(HRESULT,get_LPInnerFECRate)(THIS_ BinaryConvolutionCodeRate *pFEC) PURE;
-    STDMETHOD_(HRESULT,get_Mode)(THIS_ TransmissionMode *pmode) PURE;
-    STDMETHOD_(HRESULT,get_OtherFrequencyInUse)(THIS_ VARIANT_BOOL *pOtherFrequencyInUseVal) PURE;
-    STDMETHOD_(HRESULT,put_Bandwidth)(THIS_ __LONG32 BandwidthVal) PURE;
-    STDMETHOD_(HRESULT,put_Guard)(THIS_ GuardInterval GI) PURE;
-    STDMETHOD_(HRESULT,put_HAlpha)(THIS_ HierarchyAlpha Alpha) PURE;
-    STDMETHOD_(HRESULT,put_LPInnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_LPInnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Mode)(THIS_ TransmissionMode mode) PURE;
-    STDMETHOD_(HRESULT,put_OtherFrequencyInUse)(THIS_ VARIANT_BOOL OtherFrequencyInUseVal) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IDVBTLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IDVBTLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IDVBTLocator_Release(This) (This)->lpVtbl->Release(This)
-#define IDVBTLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IDVBTLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IDVBTLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IDVBTLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IDVBTLocator_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define IDVBTLocator_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define IDVBTLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define IDVBTLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define IDVBTLocator_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define IDVBTLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define IDVBTLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define IDVBTLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define IDVBTLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define IDVBTLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define IDVBTLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define IDVBTLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define IDVBTLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define IDVBTLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define IDVBTLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#define IDVBTLocator_get_Bandwidth(This,pBandWidthVal) (This)->lpVtbl->get_Bandwidth(This,pBandWidthVal)
-#define IDVBTLocator_get_Guard(This,pGI) (This)->lpVtbl->get_Guard(This,pGI)
-#define IDVBTLocator_get_HAlpha(This,pAlpha) (This)->lpVtbl->get_HAlpha(This,pAlpha)
-#define IDVBTLocator_get_LPInnerFEC(This,pFEC) (This)->lpVtbl->get_LPInnerFEC(This,pFEC)
-#define IDVBTLocator_get_LPInnerFECRate(This,pFEC) (This)->lpVtbl->get_LPInnerFECRate(This,pFEC)
-#define IDVBTLocator_get_Mode(This,pmode) (This)->lpVtbl->get_Mode(This,pmode)
-#define IDVBTLocator_get_OtherFrequencyInUse(This,pOtherFrequencyInUseVal) (This)->lpVtbl->get_OtherFrequencyInUse(This,pOtherFrequencyInUseVal)
-#define IDVBTLocator_put_Bandwidth(This,BandwidthVal) (This)->lpVtbl->put_Bandwidth(This,BandwidthVal)
-#define IDVBTLocator_put_Guard(This,GI) (This)->lpVtbl->put_Guard(This,GI)
-#define IDVBTLocator_put_HAlpha(This,Alpha) (This)->lpVtbl->put_HAlpha(This,Alpha)
-#define IDVBTLocator_put_LPInnerFEC(This,FEC) (This)->lpVtbl->put_LPInnerFEC(This,FEC)
-#define IDVBTLocator_put_LPInnerFECRate(This,FEC) (This)->lpVtbl->put_LPInnerFECRate(This,FEC)
-#define IDVBTLocator_put_Mode(This,mode) (This)->lpVtbl->put_Mode(This,mode)
-#define IDVBTLocator_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IDVBTLocator2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __ILocator_FWD_DEFINED__
+#define __ILocator_FWD_DEFINED__
+typedef interface ILocator ILocator;
 #endif
-DECLARE_INTERFACE_(IDVBTLocator2,IDVBTLocator)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* ILocator methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ILocator **ppNewLocator) PURE;
-    STDMETHOD_(HRESULT,get_CarrierFrequency)(THIS_ __LONG32 *pFrequency) PURE;
-    STDMETHOD_(HRESULT,get_InnerFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_InnerFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_Modulation)(THIS_ ModulationType *pModulation) PURE;
-    STDMETHOD_(HRESULT,get_OuterFEC)(THIS_ FECMethod *FEC) PURE;
-    STDMETHOD_(HRESULT,get_OuterFECRate)(THIS_ BinaryConvolutionCodeRate *FEC) PURE;
-    STDMETHOD_(HRESULT,get_SymbolRate)(THIS_ __LONG32 *Rate) PURE;
-    STDMETHOD_(HRESULT,put_CarrierFrequency)(THIS_ __LONG32 Frequency) PURE;
-    STDMETHOD_(HRESULT,put_InnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_InnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Modulation)(THIS_ ModulationType Modulation) PURE;
-    STDMETHOD_(HRESULT,put_OuterFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_OuterFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_SymbolRate)(THIS_ __LONG32 Rate) PURE;
-
-    /* IDigitalLocator methods */
-
-    /* IDVBTLocator methods */
-    STDMETHOD_(HRESULT,get_Bandwidth)(THIS_ __LONG32 *pBandWidthVal) PURE;
-    STDMETHOD_(HRESULT,get_Guard)(THIS_ GuardInterval *pGI) PURE;
-    STDMETHOD_(HRESULT,get_HAlpha)(THIS_ HierarchyAlpha *pAlpha) PURE;
-    STDMETHOD_(HRESULT,get_LPInnerFEC)(THIS_ FECMethod *pFEC) PURE;
-    STDMETHOD_(HRESULT,get_LPInnerFECRate)(THIS_ BinaryConvolutionCodeRate *pFEC) PURE;
-    STDMETHOD_(HRESULT,get_Mode)(THIS_ TransmissionMode *pmode) PURE;
-    STDMETHOD_(HRESULT,get_OtherFrequencyInUse)(THIS_ VARIANT_BOOL *pOtherFrequencyInUseVal) PURE;
-    STDMETHOD_(HRESULT,put_Bandwidth)(THIS_ __LONG32 BandwidthVal) PURE;
-    STDMETHOD_(HRESULT,put_Guard)(THIS_ GuardInterval GI) PURE;
-    STDMETHOD_(HRESULT,put_HAlpha)(THIS_ HierarchyAlpha Alpha) PURE;
-    STDMETHOD_(HRESULT,put_LPInnerFEC)(THIS_ FECMethod FEC) PURE;
-    STDMETHOD_(HRESULT,put_LPInnerFECRate)(THIS_ BinaryConvolutionCodeRate FEC) PURE;
-    STDMETHOD_(HRESULT,put_Mode)(THIS_ TransmissionMode mode) PURE;
-    STDMETHOD_(HRESULT,put_OtherFrequencyInUse)(THIS_ VARIANT_BOOL OtherFrequencyInUseVal) PURE;
-
-    /* IDVBTLocator2 methods */
-    STDMETHOD_(HRESULT,put_PhysicalLayerPipeId)(THIS_ __LONG32 PhysicalLayerPipeIdVal) PURE;
-    STDMETHOD_(HRESULT,get_PhysicalLayerPipeId)(THIS_ __LONG32 *PhysicalLayerPipeIdVal) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IDVBTLocator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IDVBTLocator2_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IDVBTLocator2_Release(This) (This)->lpVtbl->Release(This)
-#define IDVBTLocator2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IDVBTLocator2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IDVBTLocator2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IDVBTLocator2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IDVBTLocator2_Clone(This,ppNewLocator) (This)->lpVtbl->Clone(This,ppNewLocator)
-#define IDVBTLocator2_get_CarrierFrequency(This,pFrequency) (This)->lpVtbl->get_CarrierFrequency(This,pFrequency)
-#define IDVBTLocator2_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
-#define IDVBTLocator2_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
-#define IDVBTLocator2_get_Modulation(This,pModulation) (This)->lpVtbl->get_Modulation(This,pModulation)
-#define IDVBTLocator2_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
-#define IDVBTLocator2_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
-#define IDVBTLocator2_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
-#define IDVBTLocator2_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
-#define IDVBTLocator2_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
-#define IDVBTLocator2_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
-#define IDVBTLocator2_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
-#define IDVBTLocator2_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
-#define IDVBTLocator2_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
-#define IDVBTLocator2_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
-#define IDVBTLocator2_get_Bandwidth(This,pBandWidthVal) (This)->lpVtbl->get_Bandwidth(This,pBandWidthVal)
-#define IDVBTLocator2_get_Guard(This,pGI) (This)->lpVtbl->get_Guard(This,pGI)
-#define IDVBTLocator2_get_HAlpha(This,pAlpha) (This)->lpVtbl->get_HAlpha(This,pAlpha)
-#define IDVBTLocator2_get_LPInnerFEC(This,pFEC) (This)->lpVtbl->get_LPInnerFEC(This,pFEC)
-#define IDVBTLocator2_get_LPInnerFECRate(This,pFEC) (This)->lpVtbl->get_LPInnerFECRate(This,pFEC)
-#define IDVBTLocator2_get_Mode(This,pmode) (This)->lpVtbl->get_Mode(This,pmode)
-#define IDVBTLocator2_get_OtherFrequencyInUse(This,pOtherFrequencyInUseVal) (This)->lpVtbl->get_OtherFrequencyInUse(This,pOtherFrequencyInUseVal)
-#define IDVBTLocator2_put_Bandwidth(This,BandwidthVal) (This)->lpVtbl->put_Bandwidth(This,BandwidthVal)
-#define IDVBTLocator2_put_Guard(This,GI) (This)->lpVtbl->put_Guard(This,GI)
-#define IDVBTLocator2_put_HAlpha(This,Alpha) (This)->lpVtbl->put_HAlpha(This,Alpha)
-#define IDVBTLocator2_put_LPInnerFEC(This,FEC) (This)->lpVtbl->put_LPInnerFEC(This,FEC)
-#define IDVBTLocator2_put_LPInnerFECRate(This,FEC) (This)->lpVtbl->put_LPInnerFECRate(This,FEC)
-#define IDVBTLocator2_put_Mode(This,mode) (This)->lpVtbl->put_Mode(This,mode)
-#define IDVBTLocator2_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
-#define IDVBTLocator2_put_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal) (This)->lpVtbl->put_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal)
-#define IDVBTLocator2_get_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal) (This)->lpVtbl->get_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IComponents
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IAnalogLocator_FWD_DEFINED__
+#define __IAnalogLocator_FWD_DEFINED__
+typedef interface IAnalogLocator IAnalogLocator;
 #endif
-DECLARE_INTERFACE_(IComponents,IDispatch)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* IComponents methods */
-    STDMETHOD_(HRESULT,Add)(THIS_ IComponent *pComponent,VARIANT *pNewIndex) PURE;
-    STDMETHOD_(HRESULT,Clone)(THIS_ IComponents **ppNewList) PURE;
-    STDMETHOD_(HRESULT,EnumComponents)(THIS_ IEnumComponents **ppNewEnum) PURE;
-    STDMETHOD_(HRESULT,get__NewEnum)(THIS_ IEnumVARIANT **ppNewEnum) PURE;
-    STDMETHOD_(HRESULT,get_Count)(THIS_ __LONG32 *pCount) PURE;
-    STDMETHOD_(HRESULT,get_Item)(THIS_ VARIANT Index,IComponent **ppComponent) PURE;
-    STDMETHOD_(HRESULT,put_Item)(THIS_ VARIANT Index,IComponentType *pComponentType) PURE;
-    STDMETHOD_(HRESULT,Remove)(THIS_ VARIANT Index) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IComponents_Release(This) (This)->lpVtbl->Release(This)
-#define IComponents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IComponents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IComponents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IComponents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IComponents_Clone(This,ppNewList) (This)->lpVtbl->Clone(This,ppNewList)
-#define IComponents_EnumComponents(This,ppNewEnum) (This)->lpVtbl->EnumComponents(This,ppNewEnum)
-#define IComponents_get__NewEnum(This,ppNewEnum) (This)->lpVtbl->get__NewEnum(This,ppNewEnum)
-#define IComponents_get_Count(This,pCount) (This)->lpVtbl->get_Count(This,pCount)
-#define IComponents_get_Item(This,Index,ppComponent) (This)->lpVtbl->get_Item(This,Index,ppComponent)
-#define IComponents_put_Item(This,Index,pComponentType) (This)->lpVtbl->put_Item(This,Index,pComponentType)
-#define IComponents_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IEnumComponents
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IDigitalLocator_FWD_DEFINED__
+#define __IDigitalLocator_FWD_DEFINED__
+typedef interface IDigitalLocator IDigitalLocator;
 #endif
-DECLARE_INTERFACE_(IEnumComponents,IUnknown)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IEnumComponents methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ IEnumComponents **ppEnum) PURE;
-    STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt,IComponent **pprgelt,ULONG *pceltFetched) PURE;
-    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
-    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IEnumComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IEnumComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IEnumComponents_Release(This) (This)->lpVtbl->Release(This)
-#define IEnumComponents_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
-#define IEnumComponents_Next(This,celt,pprgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,pprgelt,pceltFetched)
-#define IEnumComponents_Reset() (This)->lpVtbl->Reset(This)
-#define IEnumComponents_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IComponent
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IATSCLocator_FWD_DEFINED__
+#define __IATSCLocator_FWD_DEFINED__
+typedef interface IATSCLocator IATSCLocator;
 #endif
-DECLARE_INTERFACE_(IComponent,IDispatch)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* IComponent methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ IComponent **ppNewComponent) PURE;
-    STDMETHOD_(HRESULT,get_DescLangID)(THIS_ __LONG32 *pLangID) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *pDescription) PURE;
-    STDMETHOD_(HRESULT,get_Status)(THIS_ ComponentStatus *pStatus) PURE;
-    STDMETHOD_(HRESULT,get_Type)(THIS_ IComponentType **ppCT) PURE;
-    STDMETHOD_(HRESULT,put_DescLangID)(THIS_ __LONG32 LangID) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR Description) PURE;
-    STDMETHOD_(HRESULT,put_Status)(THIS_ ComponentStatus Status) PURE;
-    STDMETHOD_(HRESULT,put_Type)(THIS_ IComponentType *pCT) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IComponent_Release(This) (This)->lpVtbl->Release(This)
-#define IComponent_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IComponent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IComponent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IComponent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IComponent_Clone(This,ppNewComponent) (This)->lpVtbl->Clone(This,ppNewComponent)
-#define IComponent_get_DescLangID(This,pLangID) (This)->lpVtbl->get_DescLangID(This,pLangID)
-#define IComponent_get_Description(This,pDescription) (This)->lpVtbl->get_Description(This,pDescription)
-#define IComponent_get_Status(This,pStatus) (This)->lpVtbl->get_Status(This,pStatus)
-#define IComponent_get_Type(This,ppCT) (This)->lpVtbl->get_Type(This,ppCT)
-#define IComponent_put_DescLangID(This,LangID) (This)->lpVtbl->put_DescLangID(This,LangID)
-#define IComponent_put_Description(This,Description) (This)->lpVtbl->put_Description(This,Description)
-#define IComponent_put_Status(This,Status) (This)->lpVtbl->put_Status(This,Status)
-#define IComponent_put_Type(This,pCT) (This)->lpVtbl->put_Type(This,pCT)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IMPEG2Component
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IATSCLocator2_FWD_DEFINED__
+#define __IATSCLocator2_FWD_DEFINED__
+typedef interface IATSCLocator2 IATSCLocator2;
 #endif
-DECLARE_INTERFACE_(IMPEG2Component,IComponent)
-{
-    BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
-
-    /* IComponent methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ IComponent **ppNewComponent) PURE;
-    STDMETHOD_(HRESULT,get_DescLangID)(THIS_ __LONG32 *pLangID) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *pDescription) PURE;
-    STDMETHOD_(HRESULT,get_Status)(THIS_ ComponentStatus *pStatus) PURE;
-    STDMETHOD_(HRESULT,get_Type)(THIS_ IComponentType **ppCT) PURE;
-    STDMETHOD_(HRESULT,put_DescLangID)(THIS_ __LONG32 LangID) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR Description) PURE;
-    STDMETHOD_(HRESULT,put_Status)(THIS_ ComponentStatus Status) PURE;
-    STDMETHOD_(HRESULT,put_Type)(THIS_ IComponentType *pCT) PURE;
-
-    /* IMPEG2Component methods */
-    STDMETHOD_(HRESULT,get_PID)(THIS_ __LONG32 *pPID) PURE;
-    STDMETHOD_(HRESULT,get_ProgramNumber)(THIS_ __LONG32 *pProgramNumber) PURE;
-    STDMETHOD_(HRESULT,put_PCRPID)(THIS_ __LONG32 PCRPID) PURE;
-    STDMETHOD_(HRESULT,put_PID)(THIS_ __LONG32 PID) PURE;
-    STDMETHOD_(HRESULT,put_ProgramNumber)(THIS_ __LONG32 ProgramNumber) PURE;
-    STDMETHOD_(HRESULT,get_PCRPID)(THIS_ __LONG32 *pPCRPID) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IMPEG2Component_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IMPEG2Component_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IMPEG2Component_Release(This) (This)->lpVtbl->Release(This)
-#define IMPEG2Component_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IMPEG2Component_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IMPEG2Component_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IMPEG2Component_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IMPEG2Component_Clone(This,ppNewComponent) (This)->lpVtbl->Clone(This,ppNewComponent)
-#define IMPEG2Component_get_DescLangID(This,pLangID) (This)->lpVtbl->get_DescLangID(This,pLangID)
-#define IMPEG2Component_get_Description(This,pDescription) (This)->lpVtbl->get_Description(This,pDescription)
-#define IMPEG2Component_get_Status(This,pStatus) (This)->lpVtbl->get_Status(This,pStatus)
-#define IMPEG2Component_get_Type(This,ppCT) (This)->lpVtbl->get_Type(This,ppCT)
-#define IMPEG2Component_put_DescLangID(This,LangID) (This)->lpVtbl->put_DescLangID(This,LangID)
-#define IMPEG2Component_put_Description(This,Description) (This)->lpVtbl->put_Description(This,Description)
-#define IMPEG2Component_put_Status(This,Status) (This)->lpVtbl->put_Status(This,Status)
-#define IMPEG2Component_put_Type(This,pCT) (This)->lpVtbl->put_Type(This,pCT)
-#define IMPEG2Component_get_PID(This,pPID) (This)->lpVtbl->get_PID(This,pPID)
-#define IMPEG2Component_get_ProgramNumber(This,pProgramNumber) (This)->lpVtbl->get_ProgramNumber(This,pProgramNumber)
-#define IMPEG2Component_put_PCRPID(This,PCRPID) (This)->lpVtbl->put_PCRPID(This,PCRPID)
-#define IMPEG2Component_put_PID(This,PID) (This)->lpVtbl->put_PID(This,PID)
-#define IMPEG2Component_put_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->put_ProgramNumber(This,ProgramNumber)
-#define IMPEG2Component_get_PCRPID(This,pPCRPID) (This)->lpVtbl->get_PCRPID(This,pPCRPID)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE ITuningSpace
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifndef __IDigitalCableLocator_FWD_DEFINED__
+#define __IDigitalCableLocator_FWD_DEFINED__
+typedef interface IDigitalCableLocator IDigitalCableLocator;
 #endif
-DECLARE_INTERFACE_(ITuningSpace,IDispatch)
+
+#ifndef __IDVBTLocator_FWD_DEFINED__
+#define __IDVBTLocator_FWD_DEFINED__
+typedef interface IDVBTLocator IDVBTLocator;
+#endif
+
+#ifndef __IDVBTLocator2_FWD_DEFINED__
+#define __IDVBTLocator2_FWD_DEFINED__
+typedef interface IDVBTLocator2 IDVBTLocator2;
+#endif
+
+#ifndef __IDVBSLocator_FWD_DEFINED__
+#define __IDVBSLocator_FWD_DEFINED__
+typedef interface IDVBSLocator IDVBSLocator;
+#endif
+
+#ifndef __IDVBSLocator2_FWD_DEFINED__
+#define __IDVBSLocator2_FWD_DEFINED__
+typedef interface IDVBSLocator2 IDVBSLocator2;
+#endif
+
+#ifndef __IDVBCLocator_FWD_DEFINED__
+#define __IDVBCLocator_FWD_DEFINED__
+typedef interface IDVBCLocator IDVBCLocator;
+#endif
+
+#ifndef __IISDBSLocator_FWD_DEFINED__
+#define __IISDBSLocator_FWD_DEFINED__
+typedef interface IISDBSLocator IISDBSLocator;
+#endif
+
+#ifndef __IESEvent_FWD_DEFINED__
+#define __IESEvent_FWD_DEFINED__
+typedef interface IESEvent IESEvent;
+#endif
+
+#ifndef __IESOpenMmiEvent_FWD_DEFINED__
+#define __IESOpenMmiEvent_FWD_DEFINED__
+typedef interface IESOpenMmiEvent IESOpenMmiEvent;
+#endif
+
+#ifndef __IESCloseMmiEvent_FWD_DEFINED__
+#define __IESCloseMmiEvent_FWD_DEFINED__
+typedef interface IESCloseMmiEvent IESCloseMmiEvent;
+#endif
+
+#ifndef __IESValueUpdatedEvent_FWD_DEFINED__
+#define __IESValueUpdatedEvent_FWD_DEFINED__
+typedef interface IESValueUpdatedEvent IESValueUpdatedEvent;
+#endif
+
+#ifndef __IESRequestTunerEvent_FWD_DEFINED__
+#define __IESRequestTunerEvent_FWD_DEFINED__
+typedef interface IESRequestTunerEvent IESRequestTunerEvent;
+#endif
+
+#ifndef __IESIsdbCasResponseEvent_FWD_DEFINED__
+#define __IESIsdbCasResponseEvent_FWD_DEFINED__
+typedef interface IESIsdbCasResponseEvent IESIsdbCasResponseEvent;
+#endif
+
+#ifndef __IGpnvsCommonBase_FWD_DEFINED__
+#define __IGpnvsCommonBase_FWD_DEFINED__
+typedef interface IGpnvsCommonBase IGpnvsCommonBase;
+#endif
+
+#ifndef __IESEventFactory_FWD_DEFINED__
+#define __IESEventFactory_FWD_DEFINED__
+typedef interface IESEventFactory IESEventFactory;
+#endif
+
+#ifndef __IESLicenseRenewalResultEvent_FWD_DEFINED__
+#define __IESLicenseRenewalResultEvent_FWD_DEFINED__
+typedef interface IESLicenseRenewalResultEvent IESLicenseRenewalResultEvent;
+#endif
+
+#ifndef __IESFileExpiryDateEvent_FWD_DEFINED__
+#define __IESFileExpiryDateEvent_FWD_DEFINED__
+typedef interface IESFileExpiryDateEvent IESFileExpiryDateEvent;
+#endif
+
+#ifndef __IESEvents_FWD_DEFINED__
+#define __IESEvents_FWD_DEFINED__
+typedef interface IESEvents IESEvents;
+#endif
+
+#ifndef __IESEventService_FWD_DEFINED__
+#define __IESEventService_FWD_DEFINED__
+typedef interface IESEventService IESEventService;
+#endif
+
+#ifndef __IESEventServiceConfiguration_FWD_DEFINED__
+#define __IESEventServiceConfiguration_FWD_DEFINED__
+typedef interface IESEventServiceConfiguration IESEventServiceConfiguration;
+#endif
+
+#ifndef __IBroadcastEvent_FWD_DEFINED__
+#define __IBroadcastEvent_FWD_DEFINED__
+typedef interface IBroadcastEvent IBroadcastEvent;
+#endif
+
+#ifndef __IBroadcastEventEx_FWD_DEFINED__
+#define __IBroadcastEventEx_FWD_DEFINED__
+typedef interface IBroadcastEventEx IBroadcastEventEx;
+#endif
+
+#ifndef __IRegisterTuner_FWD_DEFINED__
+#define __IRegisterTuner_FWD_DEFINED__
+typedef interface IRegisterTuner IRegisterTuner;
+#endif
+
+#ifndef __IBDAComparable_FWD_DEFINED__
+#define __IBDAComparable_FWD_DEFINED__
+typedef interface IBDAComparable IBDAComparable;
+#endif
+
+#ifndef __IPersistTuneXml_FWD_DEFINED__
+#define __IPersistTuneXml_FWD_DEFINED__
+typedef interface IPersistTuneXml IPersistTuneXml;
+#endif
+
+#ifndef __IPersistTuneXmlUtility_FWD_DEFINED__
+#define __IPersistTuneXmlUtility_FWD_DEFINED__
+typedef interface IPersistTuneXmlUtility IPersistTuneXmlUtility;
+#endif
+
+#ifndef __IPersistTuneXmlUtility2_FWD_DEFINED__
+#define __IPersistTuneXmlUtility2_FWD_DEFINED__
+typedef interface IPersistTuneXmlUtility2 IPersistTuneXmlUtility2;
+#endif
+
+#ifndef __IBDACreateTuneRequestEx_FWD_DEFINED__
+#define __IBDACreateTuneRequestEx_FWD_DEFINED__
+typedef interface IBDACreateTuneRequestEx IBDACreateTuneRequestEx;
+#endif
+
+#ifndef __SystemTuningSpaces_FWD_DEFINED__
+#define __SystemTuningSpaces_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class SystemTuningSpaces SystemTuningSpaces;
+#else
+typedef struct SystemTuningSpaces SystemTuningSpaces;
+#endif /* defined __cplusplus */
+#endif /* defined __SystemTuningSpaces_FWD_DEFINED__ */
+
+#ifndef __TuningSpace_FWD_DEFINED__
+#define __TuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TuningSpace TuningSpace;
+#else
+typedef struct TuningSpace TuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __TuningSpace_FWD_DEFINED__ */
+
+#ifndef __ChannelIDTuningSpace_FWD_DEFINED__
+#define __ChannelIDTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ChannelIDTuningSpace ChannelIDTuningSpace;
+#else
+typedef struct ChannelIDTuningSpace ChannelIDTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __ChannelIDTuningSpace_FWD_DEFINED__ */
+
+#ifndef __ATSCTuningSpace_FWD_DEFINED__
+#define __ATSCTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ATSCTuningSpace ATSCTuningSpace;
+#else
+typedef struct ATSCTuningSpace ATSCTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __ATSCTuningSpace_FWD_DEFINED__ */
+
+#ifndef __DigitalCableTuningSpace_FWD_DEFINED__
+#define __DigitalCableTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DigitalCableTuningSpace DigitalCableTuningSpace;
+#else
+typedef struct DigitalCableTuningSpace DigitalCableTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __DigitalCableTuningSpace_FWD_DEFINED__ */
+
+#ifndef __AnalogRadioTuningSpace_FWD_DEFINED__
+#define __AnalogRadioTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AnalogRadioTuningSpace AnalogRadioTuningSpace;
+#else
+typedef struct AnalogRadioTuningSpace AnalogRadioTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __AnalogRadioTuningSpace_FWD_DEFINED__ */
+
+#ifndef __AuxInTuningSpace_FWD_DEFINED__
+#define __AuxInTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AuxInTuningSpace AuxInTuningSpace;
+#else
+typedef struct AuxInTuningSpace AuxInTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __AuxInTuningSpace_FWD_DEFINED__ */
+
+#ifndef __AnalogTVTuningSpace_FWD_DEFINED__
+#define __AnalogTVTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AnalogTVTuningSpace AnalogTVTuningSpace;
+#else
+typedef struct AnalogTVTuningSpace AnalogTVTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __AnalogTVTuningSpace_FWD_DEFINED__ */
+
+#ifndef __DVBTuningSpace_FWD_DEFINED__
+#define __DVBTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBTuningSpace DVBTuningSpace;
+#else
+typedef struct DVBTuningSpace DVBTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBTuningSpace_FWD_DEFINED__ */
+
+#ifndef __DVBSTuningSpace_FWD_DEFINED__
+#define __DVBSTuningSpace_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBSTuningSpace DVBSTuningSpace;
+#else
+typedef struct DVBSTuningSpace DVBSTuningSpace;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBSTuningSpace_FWD_DEFINED__ */
+
+#ifndef __ComponentTypes_FWD_DEFINED__
+#define __ComponentTypes_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ComponentTypes ComponentTypes;
+#else
+typedef struct ComponentTypes ComponentTypes;
+#endif /* defined __cplusplus */
+#endif /* defined __ComponentTypes_FWD_DEFINED__ */
+
+#ifndef __ComponentType_FWD_DEFINED__
+#define __ComponentType_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ComponentType ComponentType;
+#else
+typedef struct ComponentType ComponentType;
+#endif /* defined __cplusplus */
+#endif /* defined __ComponentType_FWD_DEFINED__ */
+
+#ifndef __LanguageComponentType_FWD_DEFINED__
+#define __LanguageComponentType_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class LanguageComponentType LanguageComponentType;
+#else
+typedef struct LanguageComponentType LanguageComponentType;
+#endif /* defined __cplusplus */
+#endif /* defined __LanguageComponentType_FWD_DEFINED__ */
+
+#ifndef __MPEG2ComponentType_FWD_DEFINED__
+#define __MPEG2ComponentType_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MPEG2ComponentType MPEG2ComponentType;
+#else
+typedef struct MPEG2ComponentType MPEG2ComponentType;
+#endif /* defined __cplusplus */
+#endif /* defined __MPEG2ComponentType_FWD_DEFINED__ */
+
+#ifndef __ATSCComponentType_FWD_DEFINED__
+#define __ATSCComponentType_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ATSCComponentType ATSCComponentType;
+#else
+typedef struct ATSCComponentType ATSCComponentType;
+#endif /* defined __cplusplus */
+#endif /* defined __ATSCComponentType_FWD_DEFINED__ */
+
+#ifndef __Components_FWD_DEFINED__
+#define __Components_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class Components Components;
+#else
+typedef struct Components Components;
+#endif /* defined __cplusplus */
+#endif /* defined __Components_FWD_DEFINED__ */
+
+#ifndef __Component_FWD_DEFINED__
+#define __Component_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class Component Component;
+#else
+typedef struct Component Component;
+#endif /* defined __cplusplus */
+#endif /* defined __Component_FWD_DEFINED__ */
+
+#ifndef __MPEG2Component_FWD_DEFINED__
+#define __MPEG2Component_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MPEG2Component MPEG2Component;
+#else
+typedef struct MPEG2Component MPEG2Component;
+#endif /* defined __cplusplus */
+#endif /* defined __MPEG2Component_FWD_DEFINED__ */
+
+#ifndef __AnalogAudioComponentType_FWD_DEFINED__
+#define __AnalogAudioComponentType_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AnalogAudioComponentType AnalogAudioComponentType;
+#else
+typedef struct AnalogAudioComponentType AnalogAudioComponentType;
+#endif /* defined __cplusplus */
+#endif /* defined __AnalogAudioComponentType_FWD_DEFINED__ */
+
+#ifndef __TuneRequest_FWD_DEFINED__
+#define __TuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TuneRequest TuneRequest;
+#else
+typedef struct TuneRequest TuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __TuneRequest_FWD_DEFINED__ */
+
+#ifndef __ChannelIDTuneRequest_FWD_DEFINED__
+#define __ChannelIDTuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ChannelIDTuneRequest ChannelIDTuneRequest;
+#else
+typedef struct ChannelIDTuneRequest ChannelIDTuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __ChannelIDTuneRequest_FWD_DEFINED__ */
+
+#ifndef __ChannelTuneRequest_FWD_DEFINED__
+#define __ChannelTuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ChannelTuneRequest ChannelTuneRequest;
+#else
+typedef struct ChannelTuneRequest ChannelTuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __ChannelTuneRequest_FWD_DEFINED__ */
+
+#ifndef __ATSCChannelTuneRequest_FWD_DEFINED__
+#define __ATSCChannelTuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ATSCChannelTuneRequest ATSCChannelTuneRequest;
+#else
+typedef struct ATSCChannelTuneRequest ATSCChannelTuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __ATSCChannelTuneRequest_FWD_DEFINED__ */
+
+#ifndef __DigitalCableTuneRequest_FWD_DEFINED__
+#define __DigitalCableTuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DigitalCableTuneRequest DigitalCableTuneRequest;
+#else
+typedef struct DigitalCableTuneRequest DigitalCableTuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __DigitalCableTuneRequest_FWD_DEFINED__ */
+
+#ifndef __MPEG2TuneRequest_FWD_DEFINED__
+#define __MPEG2TuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MPEG2TuneRequest MPEG2TuneRequest;
+#else
+typedef struct MPEG2TuneRequest MPEG2TuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __MPEG2TuneRequest_FWD_DEFINED__ */
+
+#ifndef __MPEG2TuneRequestFactory_FWD_DEFINED__
+#define __MPEG2TuneRequestFactory_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MPEG2TuneRequestFactory MPEG2TuneRequestFactory;
+#else
+typedef struct MPEG2TuneRequestFactory MPEG2TuneRequestFactory;
+#endif /* defined __cplusplus */
+#endif /* defined __MPEG2TuneRequestFactory_FWD_DEFINED__ */
+
+#ifndef __Locator_FWD_DEFINED__
+#define __Locator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class Locator Locator;
+#else
+typedef struct Locator Locator;
+#endif /* defined __cplusplus */
+#endif /* defined __Locator_FWD_DEFINED__ */
+
+#ifndef __DigitalLocator_FWD_DEFINED__
+#define __DigitalLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DigitalLocator DigitalLocator;
+#else
+typedef struct DigitalLocator DigitalLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __DigitalLocator_FWD_DEFINED__ */
+
+#ifndef __AnalogLocator_FWD_DEFINED__
+#define __AnalogLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AnalogLocator AnalogLocator;
+#else
+typedef struct AnalogLocator AnalogLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __AnalogLocator_FWD_DEFINED__ */
+
+#ifndef __ATSCLocator_FWD_DEFINED__
+#define __ATSCLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ATSCLocator ATSCLocator;
+#else
+typedef struct ATSCLocator ATSCLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __ATSCLocator_FWD_DEFINED__ */
+
+#ifndef __DigitalCableLocator_FWD_DEFINED__
+#define __DigitalCableLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DigitalCableLocator DigitalCableLocator;
+#else
+typedef struct DigitalCableLocator DigitalCableLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __DigitalCableLocator_FWD_DEFINED__ */
+
+#ifndef __DVBTLocator_FWD_DEFINED__
+#define __DVBTLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBTLocator DVBTLocator;
+#else
+typedef struct DVBTLocator DVBTLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBTLocator_FWD_DEFINED__ */
+
+#ifndef __DVBTLocator2_FWD_DEFINED__
+#define __DVBTLocator2_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBTLocator2 DVBTLocator2;
+#else
+typedef struct DVBTLocator2 DVBTLocator2;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBTLocator2_FWD_DEFINED__ */
+
+#ifndef __DVBSLocator_FWD_DEFINED__
+#define __DVBSLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBSLocator DVBSLocator;
+#else
+typedef struct DVBSLocator DVBSLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBSLocator_FWD_DEFINED__ */
+
+#ifndef __DVBCLocator_FWD_DEFINED__
+#define __DVBCLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBCLocator DVBCLocator;
+#else
+typedef struct DVBCLocator DVBCLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBCLocator_FWD_DEFINED__ */
+
+#ifndef __ISDBSLocator_FWD_DEFINED__
+#define __ISDBSLocator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ISDBSLocator ISDBSLocator;
+#else
+typedef struct ISDBSLocator ISDBSLocator;
+#endif /* defined __cplusplus */
+#endif /* defined __ISDBSLocator_FWD_DEFINED__ */
+
+#ifndef __DVBTuneRequest_FWD_DEFINED__
+#define __DVBTuneRequest_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DVBTuneRequest DVBTuneRequest;
+#else
+typedef struct DVBTuneRequest DVBTuneRequest;
+#endif /* defined __cplusplus */
+#endif /* defined __DVBTuneRequest_FWD_DEFINED__ */
+
+#ifndef __CreatePropBagOnRegKey_FWD_DEFINED__
+#define __CreatePropBagOnRegKey_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CreatePropBagOnRegKey CreatePropBagOnRegKey;
+#else
+typedef struct CreatePropBagOnRegKey CreatePropBagOnRegKey;
+#endif /* defined __cplusplus */
+#endif /* defined __CreatePropBagOnRegKey_FWD_DEFINED__ */
+
+#ifndef __BroadcastEventService_FWD_DEFINED__
+#define __BroadcastEventService_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class BroadcastEventService BroadcastEventService;
+#else
+typedef struct BroadcastEventService BroadcastEventService;
+#endif /* defined __cplusplus */
+#endif /* defined __BroadcastEventService_FWD_DEFINED__ */
+
+#ifndef __TunerMarshaler_FWD_DEFINED__
+#define __TunerMarshaler_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TunerMarshaler TunerMarshaler;
+#else
+typedef struct TunerMarshaler TunerMarshaler;
+#endif /* defined __cplusplus */
+#endif /* defined __TunerMarshaler_FWD_DEFINED__ */
+
+#ifndef __PersistTuneXmlUtility_FWD_DEFINED__
+#define __PersistTuneXmlUtility_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class PersistTuneXmlUtility PersistTuneXmlUtility;
+#else
+typedef struct PersistTuneXmlUtility PersistTuneXmlUtility;
+#endif /* defined __cplusplus */
+#endif /* defined __PersistTuneXmlUtility_FWD_DEFINED__ */
+
+#ifndef __ESEventService_FWD_DEFINED__
+#define __ESEventService_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ESEventService ESEventService;
+#else
+typedef struct ESEventService ESEventService;
+#endif /* defined __cplusplus */
+#endif /* defined __ESEventService_FWD_DEFINED__ */
+
+#ifndef __ESEventFactory_FWD_DEFINED__
+#define __ESEventFactory_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ESEventFactory ESEventFactory;
+#else
+typedef struct ESEventFactory ESEventFactory;
+#endif /* defined __cplusplus */
+#endif /* defined __ESEventFactory_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <comcat.h>
+#include <strmif.h>
+#include <bdaiface.h>
+#include <regbag.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __IAnalogLocator_FWD_DEFINED__
+#define __IAnalogLocator_FWD_DEFINED__
+typedef interface IAnalogLocator IAnalogLocator;
+#endif
+
+#ifndef __IATSCLocator_FWD_DEFINED__
+#define __IATSCLocator_FWD_DEFINED__
+typedef interface IATSCLocator IATSCLocator;
+#endif
+
+#ifndef __IComponent_FWD_DEFINED__
+#define __IComponent_FWD_DEFINED__
+typedef interface IComponent IComponent;
+#endif
+
+#ifndef __IComponents_FWD_DEFINED__
+#define __IComponents_FWD_DEFINED__
+typedef interface IComponents IComponents;
+#endif
+
+#ifndef __IComponentType_FWD_DEFINED__
+#define __IComponentType_FWD_DEFINED__
+typedef interface IComponentType IComponentType;
+#endif
+
+#ifndef __IComponentTypes_FWD_DEFINED__
+#define __IComponentTypes_FWD_DEFINED__
+typedef interface IComponentTypes IComponentTypes;
+#endif
+
+#ifndef __IDigitalCableLocator_FWD_DEFINED__
+#define __IDigitalCableLocator_FWD_DEFINED__
+typedef interface IDigitalCableLocator IDigitalCableLocator;
+#endif
+
+#ifndef __IDigitalCableTuneRequest_FWD_DEFINED__
+#define __IDigitalCableTuneRequest_FWD_DEFINED__
+typedef interface IDigitalCableTuneRequest IDigitalCableTuneRequest;
+#endif
+
+#ifndef __IDigitalCableTuningSpace_FWD_DEFINED__
+#define __IDigitalCableTuningSpace_FWD_DEFINED__
+typedef interface IDigitalCableTuningSpace IDigitalCableTuningSpace;
+#endif
+
+#ifndef __IDVBCLocator_FWD_DEFINED__
+#define __IDVBCLocator_FWD_DEFINED__
+typedef interface IDVBCLocator IDVBCLocator;
+#endif
+
+#ifndef __IDVBSLocator_FWD_DEFINED__
+#define __IDVBSLocator_FWD_DEFINED__
+typedef interface IDVBSLocator IDVBSLocator;
+#endif
+
+#ifndef __IDVBSLocator2_FWD_DEFINED__
+#define __IDVBSLocator2_FWD_DEFINED__
+typedef interface IDVBSLocator2 IDVBSLocator2;
+#endif
+
+#ifndef __IDVBTLocator_FWD_DEFINED__
+#define __IDVBTLocator_FWD_DEFINED__
+typedef interface IDVBTLocator IDVBTLocator;
+#endif
+
+#ifndef __IDVBTLocator2_FWD_DEFINED__
+#define __IDVBTLocator2_FWD_DEFINED__
+typedef interface IDVBTLocator2 IDVBTLocator2;
+#endif
+
+#ifndef __IEnumComponents_FWD_DEFINED__
+#define __IEnumComponents_FWD_DEFINED__
+typedef interface IEnumComponents IEnumComponents;
+#endif
+
+#ifndef __IEnumComponentTypes_FWD_DEFINED__
+#define __IEnumComponentTypes_FWD_DEFINED__
+typedef interface IEnumComponentTypes IEnumComponentTypes;
+#endif
+
+#ifndef __IEnumTuningSpaces_FWD_DEFINED__
+#define __IEnumTuningSpaces_FWD_DEFINED__
+typedef interface IEnumTuningSpaces IEnumTuningSpaces;
+#endif
+
+#ifndef __IISDBSLocator_FWD_DEFINED__
+#define __IISDBSLocator_FWD_DEFINED__
+typedef interface IISDBSLocator IISDBSLocator;
+#endif
+
+#ifndef __ILanguageComponentType_FWD_DEFINED__
+#define __ILanguageComponentType_FWD_DEFINED__
+typedef interface ILanguageComponentType ILanguageComponentType;
+#endif
+
+#ifndef __ILocator_FWD_DEFINED__
+#define __ILocator_FWD_DEFINED__
+typedef interface ILocator ILocator;
+#endif
+
+#ifndef __IMPEG2Component_FWD_DEFINED__
+#define __IMPEG2Component_FWD_DEFINED__
+typedef interface IMPEG2Component IMPEG2Component;
+#endif
+
+#ifndef __IMPEG2ComponentType_FWD_DEFINED__
+#define __IMPEG2ComponentType_FWD_DEFINED__
+typedef interface IMPEG2ComponentType IMPEG2ComponentType;
+#endif
+
+#ifndef __IScanningTuner_FWD_DEFINED__
+#define __IScanningTuner_FWD_DEFINED__
+typedef interface IScanningTuner IScanningTuner;
+#endif
+
+#ifndef __ITuneRequest_FWD_DEFINED__
+#define __ITuneRequest_FWD_DEFINED__
+typedef interface ITuneRequest ITuneRequest;
+#endif
+
+#ifndef __ITuner_FWD_DEFINED__
+#define __ITuner_FWD_DEFINED__
+typedef interface ITuner ITuner;
+#endif
+
+#ifndef __ITunerCap_FWD_DEFINED__
+#define __ITunerCap_FWD_DEFINED__
+typedef interface ITunerCap ITunerCap;
+#endif
+
+#ifndef __ITuningSpace_FWD_DEFINED__
+#define __ITuningSpace_FWD_DEFINED__
+typedef interface ITuningSpace ITuningSpace;
+#endif
+
+#ifndef __ITuningSpaceContainer_FWD_DEFINED__
+#define __ITuningSpaceContainer_FWD_DEFINED__
+typedef interface ITuningSpaceContainer ITuningSpaceContainer;
+#endif
+
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+enum {
+    DISPID_TUNER_TS_UNIQUENAME = 1,
+    DISPID_TUNER_TS_FRIENDLYNAME = 2,
+    DISPID_TUNER_TS_CLSID = 3,
+    DISPID_TUNER_TS_NETWORKTYPE = 4,
+    DISPID_TUNER_TS__NETWORKTYPE = 5,
+    DISPID_TUNER_TS_CREATETUNEREQUEST = 6,
+    DISPID_TUNER_TS_ENUMCATEGORYGUIDS = 7,
+    DISPID_TUNER_TS_ENUMDEVICEMONIKERS = 8,
+    DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES = 9,
+    DISPID_TUNER_TS_FREQMAP = 10,
+    DISPID_TUNER_TS_DEFLOCATOR = 11,
+    DISPID_TUNER_TS_CLONE = 12,
+    DISPID_TUNER_TR_TUNINGSPACE = 1,
+    DISPID_TUNER_TR_COMPONENTS = 2,
+    DISPID_TUNER_TR_CLONE = 3,
+    DISPID_TUNER_TR_LOCATOR = 4,
+    DISPID_TUNER_CT_CATEGORY = 1,
+    DISPID_TUNER_CT_MEDIAMAJORTYPE = 2,
+    DISPID_TUNER_CT__MEDIAMAJORTYPE = 3,
+    DISPID_TUNER_CT_MEDIASUBTYPE = 4,
+    DISPID_TUNER_CT__MEDIASUBTYPE = 5,
+    DISPID_TUNER_CT_MEDIAFORMATTYPE = 6,
+    DISPID_TUNER_CT__MEDIAFORMATTYPE = 7,
+    DISPID_TUNER_CT_MEDIATYPE = 8,
+    DISPID_TUNER_CT_CLONE = 9,
+    DISPID_TUNER_LCT_LANGID = 100,
+    DISPID_TUNER_MP2CT_TYPE = 200,
+    DISPID_TUNER_ATSCCT_FLAGS = 300,
+    DISPID_TUNER_L_CARRFREQ = 1,
+    DISPID_TUNER_L_INNERFECMETHOD = 2,
+    DISPID_TUNER_L_INNERFECRATE = 3,
+    DISPID_TUNER_L_OUTERFECMETHOD = 4,
+    DISPID_TUNER_L_OUTERFECRATE = 5,
+    DISPID_TUNER_L_MOD = 6,
+    DISPID_TUNER_L_SYMRATE = 7,
+    DISPID_TUNER_L_CLONE = 8,
+    DISPID_TUNER_L_ATSC_PHYS_CHANNEL = 201,
+    DISPID_TUNER_L_ATSC_TSID = 202,
+    DISPID_TUNER_L_ATSC_MP2_PROGNO = 203,
+    DISPID_TUNER_L_DVBT_BANDWIDTH = 301,
+    DISPID_TUNER_L_DVBT_LPINNERFECMETHOD = 302,
+    DISPID_TUNER_L_DVBT_LPINNERFECRATE = 303,
+    DISPID_TUNER_L_DVBT_GUARDINTERVAL = 304,
+    DISPID_TUNER_L_DVBT_HALPHA = 305,
+    DISPID_TUNER_L_DVBT_TRANSMISSIONMODE = 306,
+    DISPID_TUNER_L_DVBT_INUSE = 307,
+    DISPID_TUNER_L_DVBT2_PHYSICALLAYERPIPEID = 351,
+    DISPID_TUNER_L_DVBS_POLARISATION = 401,
+    DISPID_TUNER_L_DVBS_WEST = 402,
+    DISPID_TUNER_L_DVBS_ORBITAL = 403,
+    DISPID_TUNER_L_DVBS_AZIMUTH = 404,
+    DISPID_TUNER_L_DVBS_ELEVATION = 405,
+    DISPID_TUNER_L_DVBS2_DISEQ_LNB_SOURCE = 406,
+    DISPID_TUNER_TS_DVBS2_LOW_OSC_FREQ_OVERRIDE = 407,
+    DISPID_TUNER_TS_DVBS2_HI_OSC_FREQ_OVERRIDE = 408,
+    DISPID_TUNER_TS_DVBS2_LNB_SWITCH_FREQ_OVERRIDE = 409,
+    DISPID_TUNER_TS_DVBS2_SPECTRAL_INVERSION_OVERRIDE = 410,
+    DISPID_TUNER_L_DVBS2_ROLLOFF = 411,
+    DISPID_TUNER_L_DVBS2_PILOT = 412,
+    DISPID_TUNER_L_ANALOG_STANDARD = 601,
+    DISPID_TUNER_L_DTV_O_MAJOR_CHANNEL = 701,
+    DISPID_TUNER_C_TYPE = 1,
+    DISPID_TUNER_C_STATUS = 2,
+    DISPID_TUNER_C_LANGID = 3,
+    DISPID_TUNER_C_DESCRIPTION = 4,
+    DISPID_TUNER_C_CLONE = 5,
+    DISPID_TUNER_C_MP2_PID = 101,
+    DISPID_TUNER_C_MP2_PCRPID = 102,
+    DISPID_TUNER_C_MP2_PROGNO = 103,
+    DISPID_TUNER_C_ANALOG_AUDIO = 201,
+    DISPID_TUNER_TS_DVB_SYSTEMTYPE = 101,
+    DISPID_TUNER_TS_DVB2_NETWORK_ID = 102,
+    DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ = 1001,
+    DISPID_TUNER_TS_DVBS_HI_OSC_FREQ = 1002,
+    DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ = 1003,
+    DISPID_TUNER_TS_DVBS_INPUT_RANGE = 1004,
+    DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION = 1005,
+    DISPID_TUNER_TS_AR_MINFREQUENCY = 101,
+    DISPID_TUNER_TS_AR_MAXFREQUENCY = 102,
+    DISPID_TUNER_TS_AR_STEP = 103,
+    DISPID_TUNER_TS_AR_COUNTRYCODE = 104,
+    DISPID_TUNER_TS_AUX_COUNTRYCODE = 101,
+    DISPID_TUNER_TS_ATV_MINCHANNEL = 101,
+    DISPID_TUNER_TS_ATV_MAXCHANNEL = 102,
+    DISPID_TUNER_TS_ATV_INPUTTYPE = 103,
+    DISPID_TUNER_TS_ATV_COUNTRYCODE = 104,
+    DISPID_TUNER_TS_ATSC_MINMINORCHANNEL = 201,
+    DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL = 202,
+    DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL = 203,
+    DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL = 204,
+    DISPID_TUNER_TS_DC_MINMAJORCHANNEL = 301,
+    DISPID_TUNER_TS_DC_MAXMAJORCHANNEL = 302,
+    DISPID_TUNER_TS_DC_MINSOURCEID = 303,
+    DISPID_TUNER_TS_DC_MAXSOURCEID = 304,
+    DISPID_CHTUNER_ATVAC_CHANNEL = 101,
+    DISPID_CHTUNER_ATVDC_SYSTEM = 101,
+    DISPID_CHTUNER_ATVDC_CONTENT = 102,
+    DISPID_CHTUNER_CIDTR_CHANNELID = 101,
+    DISPID_CHTUNER_CTR_CHANNEL = 101,
+    DISPID_CHTUNER_ACTR_MINOR_CHANNEL = 201,
+    DISPID_CHTUNER_DCTR_MAJOR_CHANNEL = 301,
+    DISPID_CHTUNER_DCTR_SRCID = 302,
+    DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID = 101,
+    DISPID_DVBTUNER_DVBC_PID = 102,
+    DISPID_DVBTUNER_DVBC_TAG = 103,
+    DISPID_DVBTUNER_DVBC_COMPONENTTYPE = 104,
+    DISPID_DVBTUNER_ONID = 101,
+    DISPID_DVBTUNER_TSID = 102,
+    DISPID_DVBTUNER_SID = 103,
+    DISPID_MP2TUNER_TSID = 101,
+    DISPID_MP2TUNER_PROGNO = 102,
+    DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1
+};
+
+
+#define SID_ESEventService CLSID_ESEventService
+#define SID_ESEventFactory CLSID_ESEventFactory
+#define SID_SBroadcastEventService CLSID_BroadcastEventService
+#define SID_SContentTuneRequest IID_ITuner
+#define SID_ScanningTuner IID_IScanningTuner
+#define SID_ScanningTunerEx IID_IScanningTunerEx
+
+/*****************************************************************************
+ * ITuningSpaces interface
+ */
+#ifndef __ITuningSpaces_INTERFACE_DEFINED__
+#define __ITuningSpaces_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITuningSpaces, 0x901284e4, 0x33fe, 0x4b69, 0x8d,0x63, 0x63,0x4a,0x59,0x6f,0x37,0x56);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("901284e4-33fe-4b69-8d63-634a596f3756")
+ITuningSpaces : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IEnumVARIANT **NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        VARIANT varIndex,
+        ITuningSpace **TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces(
+        IEnumTuningSpaces **NewEnum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITuningSpaces, 0x901284e4, 0x33fe, 0x4b69, 0x8d,0x63, 0x63,0x4a,0x59,0x6f,0x37,0x56)
+#endif
+#else
+typedef struct ITuningSpacesVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITuningSpaces* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITuningSpaces* This);
 
-    /* ITuningSpace methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ ITuningSpace **ppNewTS) PURE;
-    STDMETHOD_(HRESULT,CreateTuneRequest)(THIS_ ITuneRequest **ppTuneRequest) PURE;
-    STDMETHOD_(HRESULT,EnumCategoryGUIDs)(THIS_ IEnumGUID **ppEnum) PURE;
-    STDMETHOD_(HRESULT,EnumDeviceMonikers)(THIS_ IEnumMoniker **ppEnum) PURE;
-    STDMETHOD_(HRESULT,get__NetworkType)(THIS_ GUID *pNetworkTypeGuid) PURE;
-    STDMETHOD_(HRESULT,get_CLSID)(THIS_ BSTR *pSpaceCLSID) PURE;
-    STDMETHOD_(HRESULT,get_DefaultLocator)(THIS_ ILocator **ppLocatorVal) PURE;
-    STDMETHOD_(HRESULT,get_DefaultPreferredComponentTypes)(THIS_ IComponentTypes **ppComponentTypes) PURE;
-    STDMETHOD_(HRESULT,get_FrequencyMapping)(THIS_ BSTR *pMapping) PURE;
-    STDMETHOD_(HRESULT,get_FriendlyName)(THIS_ BSTR *pName) PURE;
-    STDMETHOD_(HRESULT,get_NetworkType)(THIS_ BSTR *pNetworkTypeGuid) PURE;
-    STDMETHOD_(HRESULT,get_UniqueName)(THIS_ BSTR *pName) PURE;
-    STDMETHOD_(HRESULT,put__NetworkType)(THIS_ REFCLSID NetworkTypeGuid) PURE;
-    STDMETHOD_(HRESULT,put_DefaultLocator)(THIS_ ILocator *pLocatorVal) PURE;
-    STDMETHOD_(HRESULT,put_DefaultPreferredComponentTypes)(THIS_ IComponentTypes *pNewComponentTypes) PURE;
-    STDMETHOD_(HRESULT,put_FrequencyMapping)(THIS_ BSTR Mapping) PURE;
-    STDMETHOD_(HRESULT,put_FriendlyName)(THIS_ BSTR Name) PURE;
-    STDMETHOD_(HRESULT,put_NetworkType)(THIS_ BSTR NetworkTypeGuid) PURE;
-    STDMETHOD_(HRESULT,put_UniqueName)(THIS_ BSTR Name) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITuningSpaces* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITuningSpaces* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITuningSpaces* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITuningSpaces* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITuningSpaces* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpaces methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        ITuningSpaces* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        ITuningSpaces* This,
+        IEnumVARIANT **NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        ITuningSpaces* This,
+        VARIANT varIndex,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_EnumTuningSpaces)(
+        ITuningSpaces* This,
+        IEnumTuningSpaces **NewEnum);
 
     END_INTERFACE
+} ITuningSpacesVtbl;
+interface ITuningSpaces {
+    CONST_VTBL ITuningSpacesVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITuningSpaces_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITuningSpaces_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITuningSpaces_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define ITuningSpaces_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define ITuningSpaces_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define ITuningSpaces_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define ITuningSpaces_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpaces methods ***/
+#define ITuningSpaces_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define ITuningSpaces_get__NewEnum(This,NewEnum) (This)->lpVtbl->get__NewEnum(This,NewEnum)
+#define ITuningSpaces_get_Item(This,varIndex,TuningSpace) (This)->lpVtbl->get_Item(This,varIndex,TuningSpace)
+#define ITuningSpaces_get_EnumTuningSpaces(This,NewEnum) (This)->lpVtbl->get_EnumTuningSpaces(This,NewEnum)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITuningSpaces_QueryInterface(ITuningSpaces* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITuningSpaces_AddRef(ITuningSpaces* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITuningSpaces_Release(ITuningSpaces* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ITuningSpaces_GetTypeInfoCount(ITuningSpaces* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ITuningSpaces_GetTypeInfo(ITuningSpaces* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ITuningSpaces_GetIDsOfNames(ITuningSpaces* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ITuningSpaces_Invoke(ITuningSpaces* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpaces methods ***/
+static FORCEINLINE HRESULT ITuningSpaces_get_Count(ITuningSpaces* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT ITuningSpaces_get__NewEnum(ITuningSpaces* This,IEnumVARIANT **NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,NewEnum);
+}
+static FORCEINLINE HRESULT ITuningSpaces_get_Item(ITuningSpaces* This,VARIANT varIndex,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_Item(This,varIndex,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuningSpaces_get_EnumTuningSpaces(ITuningSpaces* This,IEnumTuningSpaces **NewEnum) {
+    return This->lpVtbl->get_EnumTuningSpaces(This,NewEnum);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Count_Proxy(
+    ITuningSpaces* This,
+    LONG *Count);
+void __RPC_STUB ITuningSpaces_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaces_get__NewEnum_Proxy(
+    ITuningSpaces* This,
+    IEnumVARIANT **NewEnum);
+void __RPC_STUB ITuningSpaces_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Item_Proxy(
+    ITuningSpaces* This,
+    VARIANT varIndex,
+    ITuningSpace **TuningSpace);
+void __RPC_STUB ITuningSpaces_get_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaces_get_EnumTuningSpaces_Proxy(
+    ITuningSpaces* This,
+    IEnumTuningSpaces **NewEnum);
+void __RPC_STUB ITuningSpaces_get_EnumTuningSpaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITuningSpaces_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITuningSpaceContainer interface
+ */
+#ifndef __ITuningSpaceContainer_INTERFACE_DEFINED__
+#define __ITuningSpaceContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITuningSpaceContainer, 0x5b692e84, 0xe2f1, 0x11d2, 0x94,0x93, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5b692e84-e2f1-11d2-9493-00c04f72d980")
+ITuningSpaceContainer : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IEnumVARIANT **NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        VARIANT varIndex,
+        ITuningSpace **TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Item(
+        VARIANT varIndex,
+        ITuningSpace *TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID(
+        BSTR SpaceCLSID,
+        ITuningSpaces **NewColl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID(
+        REFCLSID SpaceCLSID,
+        ITuningSpaces **NewColl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TuningSpacesForName(
+        BSTR Name,
+        ITuningSpaces **NewColl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindID(
+        ITuningSpace *TuningSpace,
+        LONG *ID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        ITuningSpace *TuningSpace,
+        VARIANT *NewIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces(
+        IEnumTuningSpaces **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxCount(
+        LONG *MaxCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxCount(
+        LONG MaxCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITuningSpaceContainer, 0x5b692e84, 0xe2f1, 0x11d2, 0x94,0x93, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct ITuningSpaceContainerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITuningSpaceContainer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITuningSpaceContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITuningSpaceContainer* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITuningSpaceContainer* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITuningSpaceContainer* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITuningSpaceContainer* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITuningSpaceContainer* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpaceContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        ITuningSpaceContainer* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        ITuningSpaceContainer* This,
+        IEnumVARIANT **NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        ITuningSpaceContainer* This,
+        VARIANT varIndex,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *put_Item)(
+        ITuningSpaceContainer* This,
+        VARIANT varIndex,
+        ITuningSpace *TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *TuningSpacesForCLSID)(
+        ITuningSpaceContainer* This,
+        BSTR SpaceCLSID,
+        ITuningSpaces **NewColl);
+
+    HRESULT (STDMETHODCALLTYPE *_TuningSpacesForCLSID)(
+        ITuningSpaceContainer* This,
+        REFCLSID SpaceCLSID,
+        ITuningSpaces **NewColl);
+
+    HRESULT (STDMETHODCALLTYPE *TuningSpacesForName)(
+        ITuningSpaceContainer* This,
+        BSTR Name,
+        ITuningSpaces **NewColl);
+
+    HRESULT (STDMETHODCALLTYPE *FindID)(
+        ITuningSpaceContainer* This,
+        ITuningSpace *TuningSpace,
+        LONG *ID);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        ITuningSpaceContainer* This,
+        ITuningSpace *TuningSpace,
+        VARIANT *NewIndex);
+
+    HRESULT (STDMETHODCALLTYPE *get_EnumTuningSpaces)(
+        ITuningSpaceContainer* This,
+        IEnumTuningSpaces **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        ITuningSpaceContainer* This,
+        VARIANT Index);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxCount)(
+        ITuningSpaceContainer* This,
+        LONG *MaxCount);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxCount)(
+        ITuningSpaceContainer* This,
+        LONG MaxCount);
+
+    END_INTERFACE
+} ITuningSpaceContainerVtbl;
+interface ITuningSpaceContainer {
+    CONST_VTBL ITuningSpaceContainerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITuningSpaceContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITuningSpaceContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITuningSpaceContainer_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define ITuningSpaceContainer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define ITuningSpaceContainer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define ITuningSpaceContainer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define ITuningSpaceContainer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpaceContainer methods ***/
+#define ITuningSpaceContainer_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define ITuningSpaceContainer_get__NewEnum(This,NewEnum) (This)->lpVtbl->get__NewEnum(This,NewEnum)
+#define ITuningSpaceContainer_get_Item(This,varIndex,TuningSpace) (This)->lpVtbl->get_Item(This,varIndex,TuningSpace)
+#define ITuningSpaceContainer_put_Item(This,varIndex,TuningSpace) (This)->lpVtbl->put_Item(This,varIndex,TuningSpace)
+#define ITuningSpaceContainer_TuningSpacesForCLSID(This,SpaceCLSID,NewColl) (This)->lpVtbl->TuningSpacesForCLSID(This,SpaceCLSID,NewColl)
+#define ITuningSpaceContainer__TuningSpacesForCLSID(This,SpaceCLSID,NewColl) (This)->lpVtbl->_TuningSpacesForCLSID(This,SpaceCLSID,NewColl)
+#define ITuningSpaceContainer_TuningSpacesForName(This,Name,NewColl) (This)->lpVtbl->TuningSpacesForName(This,Name,NewColl)
+#define ITuningSpaceContainer_FindID(This,TuningSpace,ID) (This)->lpVtbl->FindID(This,TuningSpace,ID)
+#define ITuningSpaceContainer_Add(This,TuningSpace,NewIndex) (This)->lpVtbl->Add(This,TuningSpace,NewIndex)
+#define ITuningSpaceContainer_get_EnumTuningSpaces(This,ppEnum) (This)->lpVtbl->get_EnumTuningSpaces(This,ppEnum)
+#define ITuningSpaceContainer_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
+#define ITuningSpaceContainer_get_MaxCount(This,MaxCount) (This)->lpVtbl->get_MaxCount(This,MaxCount)
+#define ITuningSpaceContainer_put_MaxCount(This,MaxCount) (This)->lpVtbl->put_MaxCount(This,MaxCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITuningSpaceContainer_QueryInterface(ITuningSpaceContainer* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITuningSpaceContainer_AddRef(ITuningSpaceContainer* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITuningSpaceContainer_Release(ITuningSpaceContainer* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ITuningSpaceContainer_GetTypeInfoCount(ITuningSpaceContainer* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_GetTypeInfo(ITuningSpaceContainer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_GetIDsOfNames(ITuningSpaceContainer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_Invoke(ITuningSpaceContainer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpaceContainer methods ***/
+static FORCEINLINE HRESULT ITuningSpaceContainer_get_Count(ITuningSpaceContainer* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_get__NewEnum(ITuningSpaceContainer* This,IEnumVARIANT **NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,NewEnum);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_get_Item(ITuningSpaceContainer* This,VARIANT varIndex,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_Item(This,varIndex,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_put_Item(ITuningSpaceContainer* This,VARIANT varIndex,ITuningSpace *TuningSpace) {
+    return This->lpVtbl->put_Item(This,varIndex,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_TuningSpacesForCLSID(ITuningSpaceContainer* This,BSTR SpaceCLSID,ITuningSpaces **NewColl) {
+    return This->lpVtbl->TuningSpacesForCLSID(This,SpaceCLSID,NewColl);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer__TuningSpacesForCLSID(ITuningSpaceContainer* This,REFCLSID SpaceCLSID,ITuningSpaces **NewColl) {
+    return This->lpVtbl->_TuningSpacesForCLSID(This,SpaceCLSID,NewColl);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_TuningSpacesForName(ITuningSpaceContainer* This,BSTR Name,ITuningSpaces **NewColl) {
+    return This->lpVtbl->TuningSpacesForName(This,Name,NewColl);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_FindID(ITuningSpaceContainer* This,ITuningSpace *TuningSpace,LONG *ID) {
+    return This->lpVtbl->FindID(This,TuningSpace,ID);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_Add(ITuningSpaceContainer* This,ITuningSpace *TuningSpace,VARIANT *NewIndex) {
+    return This->lpVtbl->Add(This,TuningSpace,NewIndex);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_get_EnumTuningSpaces(ITuningSpaceContainer* This,IEnumTuningSpaces **ppEnum) {
+    return This->lpVtbl->get_EnumTuningSpaces(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_Remove(ITuningSpaceContainer* This,VARIANT Index) {
+    return This->lpVtbl->Remove(This,Index);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_get_MaxCount(ITuningSpaceContainer* This,LONG *MaxCount) {
+    return This->lpVtbl->get_MaxCount(This,MaxCount);
+}
+static FORCEINLINE HRESULT ITuningSpaceContainer_put_MaxCount(ITuningSpaceContainer* This,LONG MaxCount) {
+    return This->lpVtbl->put_MaxCount(This,MaxCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Count_Proxy(
+    ITuningSpaceContainer* This,
+    LONG *Count);
+void __RPC_STUB ITuningSpaceContainer_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get__NewEnum_Proxy(
+    ITuningSpaceContainer* This,
+    IEnumVARIANT **NewEnum);
+void __RPC_STUB ITuningSpaceContainer_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Item_Proxy(
+    ITuningSpaceContainer* This,
+    VARIANT varIndex,
+    ITuningSpace **TuningSpace);
+void __RPC_STUB ITuningSpaceContainer_get_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_Item_Proxy(
+    ITuningSpaceContainer* This,
+    VARIANT varIndex,
+    ITuningSpace *TuningSpace);
+void __RPC_STUB ITuningSpaceContainer_put_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForCLSID_Proxy(
+    ITuningSpaceContainer* This,
+    BSTR SpaceCLSID,
+    ITuningSpaces **NewColl);
+void __RPC_STUB ITuningSpaceContainer_TuningSpacesForCLSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer__TuningSpacesForCLSID_Proxy(
+    ITuningSpaceContainer* This,
+    REFCLSID SpaceCLSID,
+    ITuningSpaces **NewColl);
+void __RPC_STUB ITuningSpaceContainer__TuningSpacesForCLSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForName_Proxy(
+    ITuningSpaceContainer* This,
+    BSTR Name,
+    ITuningSpaces **NewColl);
+void __RPC_STUB ITuningSpaceContainer_TuningSpacesForName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_FindID_Proxy(
+    ITuningSpaceContainer* This,
+    ITuningSpace *TuningSpace,
+    LONG *ID);
+void __RPC_STUB ITuningSpaceContainer_FindID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Add_Proxy(
+    ITuningSpaceContainer* This,
+    ITuningSpace *TuningSpace,
+    VARIANT *NewIndex);
+void __RPC_STUB ITuningSpaceContainer_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_EnumTuningSpaces_Proxy(
+    ITuningSpaceContainer* This,
+    IEnumTuningSpaces **ppEnum);
+void __RPC_STUB ITuningSpaceContainer_get_EnumTuningSpaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Remove_Proxy(
+    ITuningSpaceContainer* This,
+    VARIANT Index);
+void __RPC_STUB ITuningSpaceContainer_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_MaxCount_Proxy(
+    ITuningSpaceContainer* This,
+    LONG *MaxCount);
+void __RPC_STUB ITuningSpaceContainer_get_MaxCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_MaxCount_Proxy(
+    ITuningSpaceContainer* This,
+    LONG MaxCount);
+void __RPC_STUB ITuningSpaceContainer_put_MaxCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITuningSpaceContainer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITuningSpace interface
+ */
+#ifndef __ITuningSpace_INTERFACE_DEFINED__
+#define __ITuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITuningSpace, 0x061c6e30, 0xe622, 0x11d2, 0x94,0x93, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("061c6e30-e622-11d2-9493-00c04f72d980")
+ITuningSpace : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_UniqueName(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_UniqueName(
+        BSTR Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FriendlyName(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FriendlyName(
+        BSTR Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CLSID(
+        BSTR *SpaceCLSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_NetworkType(
+        BSTR *NetworkTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_NetworkType(
+        BSTR NetworkTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NetworkType(
+        GUID *NetworkTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put__NetworkType(
+        REFCLSID NetworkTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateTuneRequest(
+        ITuneRequest **TuneRequest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumCategoryGUIDs(
+        IEnumGUID **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumDeviceMonikers(
+        IEnumMoniker **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DefaultPreferredComponentTypes(
+        IComponentTypes **ComponentTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DefaultPreferredComponentTypes(
+        IComponentTypes *NewComponentTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FrequencyMapping(
+        BSTR *pMapping) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FrequencyMapping(
+        BSTR Mapping) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DefaultLocator(
+        ILocator **LocatorVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DefaultLocator(
+        ILocator *LocatorVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        ITuningSpace **NewTS) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITuningSpace, 0x061c6e30, 0xe622, 0x11d2, 0x94,0x93, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct ITuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        ITuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        ITuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        ITuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        ITuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        ITuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        ITuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        ITuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        ITuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        ITuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        ITuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        ITuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        ITuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        ITuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        ITuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        ITuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        ITuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        ITuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        ITuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        ITuningSpace* This,
+        ITuningSpace **NewTS);
+
+    END_INTERFACE
+} ITuningSpaceVtbl;
+interface ITuningSpace {
+    CONST_VTBL ITuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define ITuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define ITuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define ITuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define ITuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define ITuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define ITuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define ITuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ITuningSpace_Clone(This,ppNewTS) (This)->lpVtbl->Clone(This,ppNewTS)
-#define ITuningSpace_CreateTuneRequest(This,ppTuneRequest) (This)->lpVtbl->CreateTuneRequest(This,ppTuneRequest)
+/*** ITuningSpace methods ***/
+#define ITuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define ITuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define ITuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define ITuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define ITuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define ITuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define ITuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define ITuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define ITuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define ITuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
 #define ITuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
 #define ITuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
-#define ITuningSpace_get__NetworkType(This,pNetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,pNetworkTypeGuid)
-#define ITuningSpace_get_CLSID(This,pSpaceCLSID) (This)->lpVtbl->get_CLSID(This,pSpaceCLSID)
-#define ITuningSpace_get_DefaultLocator(This,ppLocatorVal) (This)->lpVtbl->get_DefaultLocator(This,ppLocatorVal)
-#define ITuningSpace_get_DefaultPreferredComponentTypes(This,ppComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ppComponentTypes)
+#define ITuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define ITuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
 #define ITuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
-#define ITuningSpace_get_FriendlyName(This,pName) (This)->lpVtbl->get_FriendlyName(This,pName)
-#define ITuningSpace_get_NetworkType(This,pNetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,pNetworkTypeGuid)
-#define ITuningSpace_get_UniqueName(This,pName) (This)->lpVtbl->get_UniqueName(This,pName)
-#define ITuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
-#define ITuningSpace_put_DefaultLocator(This,pLocatorVal) (This)->lpVtbl->put_DefaultLocator(This,pLocatorVal)
-#define ITuningSpace_put_DefaultPreferredComponentTypes(This,pNewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,pNewComponentTypes)
 #define ITuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
-#define ITuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
-#define ITuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
-#define ITuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IComponentTypes
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#define ITuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define ITuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define ITuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITuningSpace_QueryInterface(ITuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITuningSpace_AddRef(ITuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITuningSpace_Release(ITuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ITuningSpace_GetTypeInfoCount(ITuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ITuningSpace_GetTypeInfo(ITuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ITuningSpace_GetIDsOfNames(ITuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ITuningSpace_Invoke(ITuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT ITuningSpace_get_UniqueName(ITuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_UniqueName(ITuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_FriendlyName(ITuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_FriendlyName(ITuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_CLSID(ITuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_NetworkType(ITuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_NetworkType(ITuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT ITuningSpace_get__NetworkType(ITuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT ITuningSpace_put__NetworkType(ITuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT ITuningSpace_CreateTuneRequest(ITuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT ITuningSpace_EnumCategoryGUIDs(ITuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITuningSpace_EnumDeviceMonikers(ITuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_DefaultPreferredComponentTypes(ITuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_DefaultPreferredComponentTypes(ITuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_FrequencyMapping(ITuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_FrequencyMapping(ITuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT ITuningSpace_get_DefaultLocator(ITuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT ITuningSpace_put_DefaultLocator(ITuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT ITuningSpace_Clone(ITuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
 #endif
-DECLARE_INTERFACE_(IComponentTypes,IDispatch)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_UniqueName_Proxy(
+    ITuningSpace* This,
+    BSTR *Name);
+void __RPC_STUB ITuningSpace_get_UniqueName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_UniqueName_Proxy(
+    ITuningSpace* This,
+    BSTR Name);
+void __RPC_STUB ITuningSpace_put_UniqueName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_FriendlyName_Proxy(
+    ITuningSpace* This,
+    BSTR *Name);
+void __RPC_STUB ITuningSpace_get_FriendlyName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_FriendlyName_Proxy(
+    ITuningSpace* This,
+    BSTR Name);
+void __RPC_STUB ITuningSpace_put_FriendlyName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_CLSID_Proxy(
+    ITuningSpace* This,
+    BSTR *SpaceCLSID);
+void __RPC_STUB ITuningSpace_get_CLSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_NetworkType_Proxy(
+    ITuningSpace* This,
+    BSTR *NetworkTypeGuid);
+void __RPC_STUB ITuningSpace_get_NetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_NetworkType_Proxy(
+    ITuningSpace* This,
+    BSTR NetworkTypeGuid);
+void __RPC_STUB ITuningSpace_put_NetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get__NetworkType_Proxy(
+    ITuningSpace* This,
+    GUID *NetworkTypeGuid);
+void __RPC_STUB ITuningSpace_get__NetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put__NetworkType_Proxy(
+    ITuningSpace* This,
+    REFCLSID NetworkTypeGuid);
+void __RPC_STUB ITuningSpace_put__NetworkType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_CreateTuneRequest_Proxy(
+    ITuningSpace* This,
+    ITuneRequest **TuneRequest);
+void __RPC_STUB ITuningSpace_CreateTuneRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_EnumCategoryGUIDs_Proxy(
+    ITuningSpace* This,
+    IEnumGUID **ppEnum);
+void __RPC_STUB ITuningSpace_EnumCategoryGUIDs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_EnumDeviceMonikers_Proxy(
+    ITuningSpace* This,
+    IEnumMoniker **ppEnum);
+void __RPC_STUB ITuningSpace_EnumDeviceMonikers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultPreferredComponentTypes_Proxy(
+    ITuningSpace* This,
+    IComponentTypes **ComponentTypes);
+void __RPC_STUB ITuningSpace_get_DefaultPreferredComponentTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultPreferredComponentTypes_Proxy(
+    ITuningSpace* This,
+    IComponentTypes *NewComponentTypes);
+void __RPC_STUB ITuningSpace_put_DefaultPreferredComponentTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_FrequencyMapping_Proxy(
+    ITuningSpace* This,
+    BSTR *pMapping);
+void __RPC_STUB ITuningSpace_get_FrequencyMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_FrequencyMapping_Proxy(
+    ITuningSpace* This,
+    BSTR Mapping);
+void __RPC_STUB ITuningSpace_put_FrequencyMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultLocator_Proxy(
+    ITuningSpace* This,
+    ILocator **LocatorVal);
+void __RPC_STUB ITuningSpace_get_DefaultLocator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultLocator_Proxy(
+    ITuningSpace* This,
+    ILocator *LocatorVal);
+void __RPC_STUB ITuningSpace_put_DefaultLocator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuningSpace_Clone_Proxy(
+    ITuningSpace* This,
+    ITuningSpace **NewTS);
+void __RPC_STUB ITuningSpace_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumTuningSpaces interface
+ */
+#ifndef __IEnumTuningSpaces_INTERFACE_DEFINED__
+#define __IEnumTuningSpaces_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumTuningSpaces, 0x8b8eb248, 0xfc2b, 0x11d2, 0x9d,0x8c, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8b8eb248-fc2b-11d2-9d8c-00c04f72d980")
+IEnumTuningSpaces : public IUnknown
 {
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        ITuningSpace **rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumTuningSpaces **ppEnum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumTuningSpaces, 0x8b8eb248, 0xfc2b, 0x11d2, 0x9d,0x8c, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IEnumTuningSpacesVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumTuningSpaces* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumTuningSpaces* This);
 
-    /* IComponentTypes methods */
-    STDMETHOD_(HRESULT,Add)(THIS_ IComponentType *pComponentType,VARIANT *pNewIndex) PURE;
-    STDMETHOD_(HRESULT,Clone)(THIS_ IComponentTypes **ppNewList) PURE;
-    STDMETHOD_(HRESULT,EnumComponentTypes)(THIS_ IEnumComponentTypes **ppNewEnum) PURE;
-    STDMETHOD_(HRESULT,get__NewEnum)(THIS_ IEnumVARIANT **ppNewEnum) PURE;
-    STDMETHOD_(HRESULT,get_Count)(THIS_ __LONG32 *pCount) PURE;
-    STDMETHOD_(HRESULT,get_Item)(THIS_ VARIANT Index,IComponentType **ppComponentType) PURE;
-    STDMETHOD_(HRESULT,Remove)(THIS_ VARIANT Index) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumTuningSpaces* This);
+
+    /*** IEnumTuningSpaces methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumTuningSpaces* This,
+        ULONG celt,
+        ITuningSpace **rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumTuningSpaces* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumTuningSpaces* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumTuningSpaces* This,
+        IEnumTuningSpaces **ppEnum);
 
     END_INTERFACE
+} IEnumTuningSpacesVtbl;
+interface IEnumTuningSpaces {
+    CONST_VTBL IEnumTuningSpacesVtbl* lpVtbl;
 };
-#ifdef COBJMACROS
-#define IComponentTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IComponentTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IComponentTypes_Release(This) (This)->lpVtbl->Release(This)
-#define IComponentTypes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IComponentTypes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IComponentTypes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IComponentTypes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IComponentTypes_Add(This,pComponentType,pNewIndex) (This)->lpVtbl->Add(This,pComponentType,pNewIndex)
-#define IComponentTypes_Clone(This,ppNewList) (This)->lpVtbl->Clone(This,ppNewList)
-#define IComponentTypes_EnumComponentTypes(This,ppNewEnum) (This)->lpVtbl->EnumComponentTypes(This,ppNewEnum)
-#define IComponentTypes_get__NewEnum(This,ppNewEnum) (This)->lpVtbl->get__NewEnum(This,ppNewEnum)
-#define IComponentTypes_get_Count(This,pCount) (This)->lpVtbl->get_Count(This,pCount)
-#define IComponentTypes_get_Item(This,Index,ppComponentType) (This)->lpVtbl->get_Item(This,Index,ppComponentType)
-#define IComponentTypes_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
-#endif /*COBJMACROS*/
 
-/* Fixme: Double underscored ,methods are C++ only */
-#undef  INTERFACE
-#define INTERFACE IComponentType
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumTuningSpaces_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumTuningSpaces_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumTuningSpaces_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumTuningSpaces methods ***/
+#define IEnumTuningSpaces_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumTuningSpaces_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumTuningSpaces_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumTuningSpaces_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumTuningSpaces_QueryInterface(IEnumTuningSpaces* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumTuningSpaces_AddRef(IEnumTuningSpaces* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumTuningSpaces_Release(IEnumTuningSpaces* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumTuningSpaces methods ***/
+static FORCEINLINE HRESULT IEnumTuningSpaces_Next(IEnumTuningSpaces* This,ULONG celt,ITuningSpace **rgelt,ULONG *pceltFetched) {
+    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumTuningSpaces_Skip(IEnumTuningSpaces* This,ULONG celt) {
+    return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumTuningSpaces_Reset(IEnumTuningSpaces* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumTuningSpaces_Clone(IEnumTuningSpaces* This,IEnumTuningSpaces **ppEnum) {
+    return This->lpVtbl->Clone(This,ppEnum);
+}
 #endif
-DECLARE_INTERFACE_(IComponentType,IDispatch)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Next_Proxy(
+    IEnumTuningSpaces* This,
+    ULONG celt,
+    ITuningSpace **rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumTuningSpaces_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Skip_Proxy(
+    IEnumTuningSpaces* This,
+    ULONG celt);
+void __RPC_STUB IEnumTuningSpaces_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Reset_Proxy(
+    IEnumTuningSpaces* This);
+void __RPC_STUB IEnumTuningSpaces_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Clone_Proxy(
+    IEnumTuningSpaces* This,
+    IEnumTuningSpaces **ppEnum);
+void __RPC_STUB IEnumTuningSpaces_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumTuningSpaces_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBTuningSpace interface
+ */
+#ifndef __IDVBTuningSpace_INTERFACE_DEFINED__
+#define __IDVBTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBTuningSpace, 0xada0b268, 0x3b19, 0x4e5b, 0xac,0xc4, 0x49,0xf8,0x52,0xbe,0x13,0xba);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ada0b268-3b19-4e5b-acc4-49f852be13ba")
+IDVBTuningSpace : public ITuningSpace
 {
+    virtual HRESULT STDMETHODCALLTYPE get_SystemType(
+        DVBSystemType *SysType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SystemType(
+        DVBSystemType SysType) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBTuningSpace, 0xada0b268, 0x3b19, 0x4e5b, 0xac,0xc4, 0x49,0xf8,0x52,0xbe,0x13,0xba)
+#endif
+#else
+typedef struct IDVBTuningSpaceVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT *pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBTuningSpace* This);
 
-    /* IComponentType methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ IComponentType **ppNewCT) PURE;
-    STDMETHOD_(HRESULT,get__MediaFormatType)(THIS_ GUID *pMediaFormatType) PURE;
-    STDMETHOD_(HRESULT,get__MediaMajorType)(THIS_ GUID *MediaMajorType) PURE;
-    STDMETHOD_(HRESULT,get__MediaSubType)(THIS_ GUID *pMediaSubType) PURE;
-    STDMETHOD_(HRESULT,get_Category)(THIS_ ComponentCategory *pCategory) PURE;
-    STDMETHOD_(HRESULT,get_MediaFormatType)(THIS_ BSTR *pMediaFormatType) PURE;
-    STDMETHOD_(HRESULT,get_MediaMajorType)(THIS_ BSTR *pMediaMajorType) PURE;
-    STDMETHOD_(HRESULT,get_MediaSubType)(THIS_ BSTR *pMediaSubType) PURE;
-    STDMETHOD_(HRESULT,get_MediaType)(THIS_ AM_MEDIA_TYPE *pMediaType) PURE;
-    STDMETHOD_(HRESULT,put__MediaFormatType)(THIS_ REFCLSID MediaFormatType) PURE;
-    STDMETHOD_(HRESULT,put__MediaMajorType)(THIS_ REFCLSID MediaMajorType) PURE;
-    STDMETHOD_(HRESULT,put__MediaSubType)(THIS_ REFCLSID MediaSubType) PURE;
-    STDMETHOD_(HRESULT,put_Category)(THIS_ ComponentCategory Category) PURE;
-    STDMETHOD_(HRESULT,put_MediaFormatType)(THIS_ BSTR MediaFormatType) PURE;
-    STDMETHOD_(HRESULT,put_MediaMajorType)(THIS_ BSTR MediaMajorType) PURE;
-    STDMETHOD_(HRESULT,put_MediaSubType)(THIS_ BSTR MediaSubType) PURE;
-    STDMETHOD_(HRESULT,put_MediaType)(THIS_ AM_MEDIA_TYPE MediaType) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IDVBTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IDVBTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IDVBTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IDVBTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IDVBTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IDVBTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IDVBTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IDVBTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IDVBTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IDVBTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IDVBTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IDVBTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IDVBTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IDVBTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IDVBTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IDVBTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IDVBTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IDVBTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IDVBTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SystemType)(
+        IDVBTuningSpace* This,
+        DVBSystemType *SysType);
+
+    HRESULT (STDMETHODCALLTYPE *put_SystemType)(
+        IDVBTuningSpace* This,
+        DVBSystemType SysType);
 
     END_INTERFACE
+} IDVBTuningSpaceVtbl;
+interface IDVBTuningSpace {
+    CONST_VTBL IDVBTuningSpaceVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IDVBTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IDVBTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IDVBTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IDVBTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IDVBTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IDVBTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IDVBTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IDVBTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IDVBTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IDVBTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IDVBTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IDVBTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IDVBTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IDVBTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IDVBTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IDVBTuningSpace methods ***/
+#define IDVBTuningSpace_get_SystemType(This,SysType) (This)->lpVtbl->get_SystemType(This,SysType)
+#define IDVBTuningSpace_put_SystemType(This,SysType) (This)->lpVtbl->put_SystemType(This,SysType)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace_QueryInterface(IDVBTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBTuningSpace_AddRef(IDVBTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBTuningSpace_Release(IDVBTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace_GetTypeInfoCount(IDVBTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_GetTypeInfo(IDVBTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_GetIDsOfNames(IDVBTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_Invoke(IDVBTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace_get_UniqueName(IDVBTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_UniqueName(IDVBTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_FriendlyName(IDVBTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_FriendlyName(IDVBTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_CLSID(IDVBTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_NetworkType(IDVBTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_NetworkType(IDVBTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get__NetworkType(IDVBTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put__NetworkType(IDVBTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_CreateTuneRequest(IDVBTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_EnumCategoryGUIDs(IDVBTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_EnumDeviceMonikers(IDVBTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_DefaultPreferredComponentTypes(IDVBTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_DefaultPreferredComponentTypes(IDVBTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_FrequencyMapping(IDVBTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_FrequencyMapping(IDVBTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_get_DefaultLocator(IDVBTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_DefaultLocator(IDVBTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_Clone(IDVBTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IDVBTuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace_get_SystemType(IDVBTuningSpace* This,DVBSystemType *SysType) {
+    return This->lpVtbl->get_SystemType(This,SysType);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace_put_SystemType(IDVBTuningSpace* This,DVBSystemType SysType) {
+    return This->lpVtbl->put_SystemType(This,SysType);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBTuningSpace_get_SystemType_Proxy(
+    IDVBTuningSpace* This,
+    DVBSystemType *SysType);
+void __RPC_STUB IDVBTuningSpace_get_SystemType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuningSpace_put_SystemType_Proxy(
+    IDVBTuningSpace* This,
+    DVBSystemType SysType);
+void __RPC_STUB IDVBTuningSpace_put_SystemType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBTuningSpace2 interface
+ */
+#ifndef __IDVBTuningSpace2_INTERFACE_DEFINED__
+#define __IDVBTuningSpace2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBTuningSpace2, 0x843188b4, 0xce62, 0x43db, 0x96,0x6b, 0x81,0x45,0xa0,0x94,0xe0,0x40);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("843188b4-ce62-43db-966b-8145a094e040")
+IDVBTuningSpace2 : public IDVBTuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_NetworkID(
+        LONG *NetworkID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_NetworkID(
+        LONG NetworkID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBTuningSpace2, 0x843188b4, 0xce62, 0x43db, 0x96,0x6b, 0x81,0x45,0xa0,0x94,0xe0,0x40)
+#endif
+#else
+typedef struct IDVBTuningSpace2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBTuningSpace2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBTuningSpace2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBTuningSpace2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBTuningSpace2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBTuningSpace2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBTuningSpace2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBTuningSpace2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IDVBTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IDVBTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IDVBTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IDVBTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IDVBTuningSpace2* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IDVBTuningSpace2* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IDVBTuningSpace2* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IDVBTuningSpace2* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IDVBTuningSpace2* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IDVBTuningSpace2* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IDVBTuningSpace2* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IDVBTuningSpace2* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IDVBTuningSpace2* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IDVBTuningSpace2* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IDVBTuningSpace2* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IDVBTuningSpace2* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IDVBTuningSpace2* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IDVBTuningSpace2* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBTuningSpace2* This,
+        ITuningSpace **NewTS);
+
+    /*** IDVBTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SystemType)(
+        IDVBTuningSpace2* This,
+        DVBSystemType *SysType);
+
+    HRESULT (STDMETHODCALLTYPE *put_SystemType)(
+        IDVBTuningSpace2* This,
+        DVBSystemType SysType);
+
+    /*** IDVBTuningSpace2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_NetworkID)(
+        IDVBTuningSpace2* This,
+        LONG *NetworkID);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkID)(
+        IDVBTuningSpace2* This,
+        LONG NetworkID);
+
+    END_INTERFACE
+} IDVBTuningSpace2Vtbl;
+interface IDVBTuningSpace2 {
+    CONST_VTBL IDVBTuningSpace2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBTuningSpace2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBTuningSpace2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBTuningSpace2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBTuningSpace2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBTuningSpace2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBTuningSpace2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBTuningSpace2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IDVBTuningSpace2_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IDVBTuningSpace2_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IDVBTuningSpace2_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IDVBTuningSpace2_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IDVBTuningSpace2_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IDVBTuningSpace2_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace2_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace2_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace2_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IDVBTuningSpace2_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IDVBTuningSpace2_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IDVBTuningSpace2_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IDVBTuningSpace2_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IDVBTuningSpace2_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IDVBTuningSpace2_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IDVBTuningSpace2_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IDVBTuningSpace2_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IDVBTuningSpace2_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IDVBTuningSpace2_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IDVBTuningSpace methods ***/
+#define IDVBTuningSpace2_get_SystemType(This,SysType) (This)->lpVtbl->get_SystemType(This,SysType)
+#define IDVBTuningSpace2_put_SystemType(This,SysType) (This)->lpVtbl->put_SystemType(This,SysType)
+/*** IDVBTuningSpace2 methods ***/
+#define IDVBTuningSpace2_get_NetworkID(This,NetworkID) (This)->lpVtbl->get_NetworkID(This,NetworkID)
+#define IDVBTuningSpace2_put_NetworkID(This,NetworkID) (This)->lpVtbl->put_NetworkID(This,NetworkID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace2_QueryInterface(IDVBTuningSpace2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBTuningSpace2_AddRef(IDVBTuningSpace2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBTuningSpace2_Release(IDVBTuningSpace2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace2_GetTypeInfoCount(IDVBTuningSpace2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_GetTypeInfo(IDVBTuningSpace2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_GetIDsOfNames(IDVBTuningSpace2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_Invoke(IDVBTuningSpace2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_UniqueName(IDVBTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_UniqueName(IDVBTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_FriendlyName(IDVBTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_FriendlyName(IDVBTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_CLSID(IDVBTuningSpace2* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_NetworkType(IDVBTuningSpace2* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_NetworkType(IDVBTuningSpace2* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get__NetworkType(IDVBTuningSpace2* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put__NetworkType(IDVBTuningSpace2* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_CreateTuneRequest(IDVBTuningSpace2* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_EnumCategoryGUIDs(IDVBTuningSpace2* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_EnumDeviceMonikers(IDVBTuningSpace2* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_DefaultPreferredComponentTypes(IDVBTuningSpace2* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_DefaultPreferredComponentTypes(IDVBTuningSpace2* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_FrequencyMapping(IDVBTuningSpace2* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_FrequencyMapping(IDVBTuningSpace2* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_DefaultLocator(IDVBTuningSpace2* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_DefaultLocator(IDVBTuningSpace2* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_Clone(IDVBTuningSpace2* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IDVBTuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_SystemType(IDVBTuningSpace2* This,DVBSystemType *SysType) {
+    return This->lpVtbl->get_SystemType(This,SysType);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_SystemType(IDVBTuningSpace2* This,DVBSystemType SysType) {
+    return This->lpVtbl->put_SystemType(This,SysType);
+}
+/*** IDVBTuningSpace2 methods ***/
+static FORCEINLINE HRESULT IDVBTuningSpace2_get_NetworkID(IDVBTuningSpace2* This,LONG *NetworkID) {
+    return This->lpVtbl->get_NetworkID(This,NetworkID);
+}
+static FORCEINLINE HRESULT IDVBTuningSpace2_put_NetworkID(IDVBTuningSpace2* This,LONG NetworkID) {
+    return This->lpVtbl->put_NetworkID(This,NetworkID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_get_NetworkID_Proxy(
+    IDVBTuningSpace2* This,
+    LONG *NetworkID);
+void __RPC_STUB IDVBTuningSpace2_get_NetworkID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_put_NetworkID_Proxy(
+    IDVBTuningSpace2* This,
+    LONG NetworkID);
+void __RPC_STUB IDVBTuningSpace2_put_NetworkID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBTuningSpace2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBSTuningSpace interface
+ */
+#ifndef __IDVBSTuningSpace_INTERFACE_DEFINED__
+#define __IDVBSTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBSTuningSpace, 0xcdf7be60, 0xd954, 0x42fd, 0xa9,0x72, 0x78,0x97,0x19,0x58,0xe4,0x70);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cdf7be60-d954-42fd-a972-78971958e470")
+IDVBSTuningSpace : public IDVBTuningSpace2
+{
+    virtual HRESULT STDMETHODCALLTYPE get_LowOscillator(
+        LONG *LowOscillator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LowOscillator(
+        LONG LowOscillator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HighOscillator(
+        LONG *HighOscillator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_HighOscillator(
+        LONG HighOscillator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LNBSwitch(
+        LONG *LNBSwitch) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LNBSwitch(
+        LONG LNBSwitch) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InputRange(
+        BSTR *InputRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InputRange(
+        BSTR InputRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SpectralInversion(
+        SpectralInversion *SpectralInversionVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SpectralInversion(
+        SpectralInversion SpectralInversionVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBSTuningSpace, 0xcdf7be60, 0xd954, 0x42fd, 0xa9,0x72, 0x78,0x97,0x19,0x58,0xe4,0x70)
+#endif
+#else
+typedef struct IDVBSTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBSTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBSTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBSTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBSTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBSTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBSTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBSTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IDVBSTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IDVBSTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IDVBSTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IDVBSTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IDVBSTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IDVBSTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IDVBSTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IDVBSTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IDVBSTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IDVBSTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IDVBSTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IDVBSTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IDVBSTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IDVBSTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IDVBSTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IDVBSTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IDVBSTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IDVBSTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBSTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IDVBTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SystemType)(
+        IDVBSTuningSpace* This,
+        DVBSystemType *SysType);
+
+    HRESULT (STDMETHODCALLTYPE *put_SystemType)(
+        IDVBSTuningSpace* This,
+        DVBSystemType SysType);
+
+    /*** IDVBTuningSpace2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_NetworkID)(
+        IDVBSTuningSpace* This,
+        LONG *NetworkID);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkID)(
+        IDVBSTuningSpace* This,
+        LONG NetworkID);
+
+    /*** IDVBSTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_LowOscillator)(
+        IDVBSTuningSpace* This,
+        LONG *LowOscillator);
+
+    HRESULT (STDMETHODCALLTYPE *put_LowOscillator)(
+        IDVBSTuningSpace* This,
+        LONG LowOscillator);
+
+    HRESULT (STDMETHODCALLTYPE *get_HighOscillator)(
+        IDVBSTuningSpace* This,
+        LONG *HighOscillator);
+
+    HRESULT (STDMETHODCALLTYPE *put_HighOscillator)(
+        IDVBSTuningSpace* This,
+        LONG HighOscillator);
+
+    HRESULT (STDMETHODCALLTYPE *get_LNBSwitch)(
+        IDVBSTuningSpace* This,
+        LONG *LNBSwitch);
+
+    HRESULT (STDMETHODCALLTYPE *put_LNBSwitch)(
+        IDVBSTuningSpace* This,
+        LONG LNBSwitch);
+
+    HRESULT (STDMETHODCALLTYPE *get_InputRange)(
+        IDVBSTuningSpace* This,
+        BSTR *InputRange);
+
+    HRESULT (STDMETHODCALLTYPE *put_InputRange)(
+        IDVBSTuningSpace* This,
+        BSTR InputRange);
+
+    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
+        IDVBSTuningSpace* This,
+        SpectralInversion *SpectralInversionVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
+        IDVBSTuningSpace* This,
+        SpectralInversion SpectralInversionVal);
+
+    END_INTERFACE
+} IDVBSTuningSpaceVtbl;
+interface IDVBSTuningSpace {
+    CONST_VTBL IDVBSTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBSTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBSTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBSTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBSTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBSTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBSTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBSTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IDVBSTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IDVBSTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IDVBSTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IDVBSTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IDVBSTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IDVBSTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IDVBSTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IDVBSTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IDVBSTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IDVBSTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IDVBSTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IDVBSTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IDVBSTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IDVBSTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IDVBSTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IDVBSTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IDVBSTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IDVBSTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IDVBSTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IDVBTuningSpace methods ***/
+#define IDVBSTuningSpace_get_SystemType(This,SysType) (This)->lpVtbl->get_SystemType(This,SysType)
+#define IDVBSTuningSpace_put_SystemType(This,SysType) (This)->lpVtbl->put_SystemType(This,SysType)
+/*** IDVBTuningSpace2 methods ***/
+#define IDVBSTuningSpace_get_NetworkID(This,NetworkID) (This)->lpVtbl->get_NetworkID(This,NetworkID)
+#define IDVBSTuningSpace_put_NetworkID(This,NetworkID) (This)->lpVtbl->put_NetworkID(This,NetworkID)
+/*** IDVBSTuningSpace methods ***/
+#define IDVBSTuningSpace_get_LowOscillator(This,LowOscillator) (This)->lpVtbl->get_LowOscillator(This,LowOscillator)
+#define IDVBSTuningSpace_put_LowOscillator(This,LowOscillator) (This)->lpVtbl->put_LowOscillator(This,LowOscillator)
+#define IDVBSTuningSpace_get_HighOscillator(This,HighOscillator) (This)->lpVtbl->get_HighOscillator(This,HighOscillator)
+#define IDVBSTuningSpace_put_HighOscillator(This,HighOscillator) (This)->lpVtbl->put_HighOscillator(This,HighOscillator)
+#define IDVBSTuningSpace_get_LNBSwitch(This,LNBSwitch) (This)->lpVtbl->get_LNBSwitch(This,LNBSwitch)
+#define IDVBSTuningSpace_put_LNBSwitch(This,LNBSwitch) (This)->lpVtbl->put_LNBSwitch(This,LNBSwitch)
+#define IDVBSTuningSpace_get_InputRange(This,InputRange) (This)->lpVtbl->get_InputRange(This,InputRange)
+#define IDVBSTuningSpace_put_InputRange(This,InputRange) (This)->lpVtbl->put_InputRange(This,InputRange)
+#define IDVBSTuningSpace_get_SpectralInversion(This,SpectralInversionVal) (This)->lpVtbl->get_SpectralInversion(This,SpectralInversionVal)
+#define IDVBSTuningSpace_put_SpectralInversion(This,SpectralInversionVal) (This)->lpVtbl->put_SpectralInversion(This,SpectralInversionVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_QueryInterface(IDVBSTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBSTuningSpace_AddRef(IDVBSTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBSTuningSpace_Release(IDVBSTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_GetTypeInfoCount(IDVBSTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_GetTypeInfo(IDVBSTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_GetIDsOfNames(IDVBSTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_Invoke(IDVBSTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_UniqueName(IDVBSTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_UniqueName(IDVBSTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_FriendlyName(IDVBSTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_FriendlyName(IDVBSTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_CLSID(IDVBSTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_NetworkType(IDVBSTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_NetworkType(IDVBSTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get__NetworkType(IDVBSTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put__NetworkType(IDVBSTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_CreateTuneRequest(IDVBSTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_EnumCategoryGUIDs(IDVBSTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_EnumDeviceMonikers(IDVBSTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_DefaultPreferredComponentTypes(IDVBSTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_DefaultPreferredComponentTypes(IDVBSTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_FrequencyMapping(IDVBSTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_FrequencyMapping(IDVBSTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_DefaultLocator(IDVBSTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_DefaultLocator(IDVBSTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_Clone(IDVBSTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IDVBTuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_SystemType(IDVBSTuningSpace* This,DVBSystemType *SysType) {
+    return This->lpVtbl->get_SystemType(This,SysType);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_SystemType(IDVBSTuningSpace* This,DVBSystemType SysType) {
+    return This->lpVtbl->put_SystemType(This,SysType);
+}
+/*** IDVBTuningSpace2 methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_NetworkID(IDVBSTuningSpace* This,LONG *NetworkID) {
+    return This->lpVtbl->get_NetworkID(This,NetworkID);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_NetworkID(IDVBSTuningSpace* This,LONG NetworkID) {
+    return This->lpVtbl->put_NetworkID(This,NetworkID);
+}
+/*** IDVBSTuningSpace methods ***/
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_LowOscillator(IDVBSTuningSpace* This,LONG *LowOscillator) {
+    return This->lpVtbl->get_LowOscillator(This,LowOscillator);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_LowOscillator(IDVBSTuningSpace* This,LONG LowOscillator) {
+    return This->lpVtbl->put_LowOscillator(This,LowOscillator);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_HighOscillator(IDVBSTuningSpace* This,LONG *HighOscillator) {
+    return This->lpVtbl->get_HighOscillator(This,HighOscillator);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_HighOscillator(IDVBSTuningSpace* This,LONG HighOscillator) {
+    return This->lpVtbl->put_HighOscillator(This,HighOscillator);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_LNBSwitch(IDVBSTuningSpace* This,LONG *LNBSwitch) {
+    return This->lpVtbl->get_LNBSwitch(This,LNBSwitch);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_LNBSwitch(IDVBSTuningSpace* This,LONG LNBSwitch) {
+    return This->lpVtbl->put_LNBSwitch(This,LNBSwitch);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_InputRange(IDVBSTuningSpace* This,BSTR *InputRange) {
+    return This->lpVtbl->get_InputRange(This,InputRange);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_InputRange(IDVBSTuningSpace* This,BSTR InputRange) {
+    return This->lpVtbl->put_InputRange(This,InputRange);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_get_SpectralInversion(IDVBSTuningSpace* This,SpectralInversion *SpectralInversionVal) {
+    return This->lpVtbl->get_SpectralInversion(This,SpectralInversionVal);
+}
+static FORCEINLINE HRESULT IDVBSTuningSpace_put_SpectralInversion(IDVBSTuningSpace* This,SpectralInversion SpectralInversionVal) {
+    return This->lpVtbl->put_SpectralInversion(This,SpectralInversionVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LowOscillator_Proxy(
+    IDVBSTuningSpace* This,
+    LONG *LowOscillator);
+void __RPC_STUB IDVBSTuningSpace_get_LowOscillator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LowOscillator_Proxy(
+    IDVBSTuningSpace* This,
+    LONG LowOscillator);
+void __RPC_STUB IDVBSTuningSpace_put_LowOscillator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_HighOscillator_Proxy(
+    IDVBSTuningSpace* This,
+    LONG *HighOscillator);
+void __RPC_STUB IDVBSTuningSpace_get_HighOscillator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_HighOscillator_Proxy(
+    IDVBSTuningSpace* This,
+    LONG HighOscillator);
+void __RPC_STUB IDVBSTuningSpace_put_HighOscillator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LNBSwitch_Proxy(
+    IDVBSTuningSpace* This,
+    LONG *LNBSwitch);
+void __RPC_STUB IDVBSTuningSpace_get_LNBSwitch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LNBSwitch_Proxy(
+    IDVBSTuningSpace* This,
+    LONG LNBSwitch);
+void __RPC_STUB IDVBSTuningSpace_put_LNBSwitch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_InputRange_Proxy(
+    IDVBSTuningSpace* This,
+    BSTR *InputRange);
+void __RPC_STUB IDVBSTuningSpace_get_InputRange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_InputRange_Proxy(
+    IDVBSTuningSpace* This,
+    BSTR InputRange);
+void __RPC_STUB IDVBSTuningSpace_put_InputRange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_SpectralInversion_Proxy(
+    IDVBSTuningSpace* This,
+    SpectralInversion *SpectralInversionVal);
+void __RPC_STUB IDVBSTuningSpace_get_SpectralInversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_SpectralInversion_Proxy(
+    IDVBSTuningSpace* This,
+    SpectralInversion SpectralInversionVal);
+void __RPC_STUB IDVBSTuningSpace_put_SpectralInversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBSTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAuxInTuningSpace interface
+ */
+#ifndef __IAuxInTuningSpace_INTERFACE_DEFINED__
+#define __IAuxInTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAuxInTuningSpace, 0xe48244b8, 0x7e17, 0x4f76, 0xa7,0x63, 0x50,0x90,0xff,0x1e,0x2f,0x30);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e48244b8-7e17-4f76-a763-5090ff1e2f30")
+IAuxInTuningSpace : public ITuningSpace
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAuxInTuningSpace, 0xe48244b8, 0x7e17, 0x4f76, 0xa7,0x63, 0x50,0x90,0xff,0x1e,0x2f,0x30)
+#endif
+#else
+typedef struct IAuxInTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAuxInTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAuxInTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAuxInTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAuxInTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAuxInTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAuxInTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAuxInTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IAuxInTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IAuxInTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IAuxInTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IAuxInTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IAuxInTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IAuxInTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IAuxInTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IAuxInTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IAuxInTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IAuxInTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IAuxInTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IAuxInTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IAuxInTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IAuxInTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IAuxInTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IAuxInTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IAuxInTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IAuxInTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAuxInTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    END_INTERFACE
+} IAuxInTuningSpaceVtbl;
+interface IAuxInTuningSpace {
+    CONST_VTBL IAuxInTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAuxInTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAuxInTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAuxInTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAuxInTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAuxInTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAuxInTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAuxInTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IAuxInTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IAuxInTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IAuxInTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IAuxInTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IAuxInTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IAuxInTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IAuxInTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IAuxInTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IAuxInTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IAuxInTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IAuxInTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IAuxInTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IAuxInTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IAuxInTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IAuxInTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace_QueryInterface(IAuxInTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAuxInTuningSpace_AddRef(IAuxInTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAuxInTuningSpace_Release(IAuxInTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace_GetTypeInfoCount(IAuxInTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_GetTypeInfo(IAuxInTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_GetIDsOfNames(IAuxInTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_Invoke(IAuxInTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_UniqueName(IAuxInTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_UniqueName(IAuxInTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_FriendlyName(IAuxInTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_FriendlyName(IAuxInTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_CLSID(IAuxInTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_NetworkType(IAuxInTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_NetworkType(IAuxInTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get__NetworkType(IAuxInTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put__NetworkType(IAuxInTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_CreateTuneRequest(IAuxInTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_EnumCategoryGUIDs(IAuxInTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_EnumDeviceMonikers(IAuxInTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_DefaultPreferredComponentTypes(IAuxInTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_DefaultPreferredComponentTypes(IAuxInTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_FrequencyMapping(IAuxInTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_FrequencyMapping(IAuxInTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_get_DefaultLocator(IAuxInTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_put_DefaultLocator(IAuxInTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace_Clone(IAuxInTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IAuxInTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAuxInTuningSpace2 interface
+ */
+#ifndef __IAuxInTuningSpace2_INTERFACE_DEFINED__
+#define __IAuxInTuningSpace2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAuxInTuningSpace2, 0xb10931ed, 0x8bfe, 0x4ab0, 0x9d,0xce, 0xe4,0x69,0xc2,0x9a,0x97,0x29);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b10931ed-8bfe-4ab0-9dce-e469c29a9729")
+IAuxInTuningSpace2 : public IAuxInTuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_CountryCode(
+        LONG *CountryCodeVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CountryCode(
+        LONG NewCountryCodeVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAuxInTuningSpace2, 0xb10931ed, 0x8bfe, 0x4ab0, 0x9d,0xce, 0xe4,0x69,0xc2,0x9a,0x97,0x29)
+#endif
+#else
+typedef struct IAuxInTuningSpace2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAuxInTuningSpace2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAuxInTuningSpace2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAuxInTuningSpace2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAuxInTuningSpace2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAuxInTuningSpace2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAuxInTuningSpace2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAuxInTuningSpace2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IAuxInTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IAuxInTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IAuxInTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IAuxInTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IAuxInTuningSpace2* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IAuxInTuningSpace2* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IAuxInTuningSpace2* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IAuxInTuningSpace2* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IAuxInTuningSpace2* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IAuxInTuningSpace2* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IAuxInTuningSpace2* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IAuxInTuningSpace2* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IAuxInTuningSpace2* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IAuxInTuningSpace2* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IAuxInTuningSpace2* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IAuxInTuningSpace2* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IAuxInTuningSpace2* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IAuxInTuningSpace2* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAuxInTuningSpace2* This,
+        ITuningSpace **NewTS);
+
+    /*** IAuxInTuningSpace2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IAuxInTuningSpace2* This,
+        LONG *CountryCodeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IAuxInTuningSpace2* This,
+        LONG NewCountryCodeVal);
+
+    END_INTERFACE
+} IAuxInTuningSpace2Vtbl;
+interface IAuxInTuningSpace2 {
+    CONST_VTBL IAuxInTuningSpace2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAuxInTuningSpace2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAuxInTuningSpace2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAuxInTuningSpace2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAuxInTuningSpace2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAuxInTuningSpace2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAuxInTuningSpace2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAuxInTuningSpace2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IAuxInTuningSpace2_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IAuxInTuningSpace2_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IAuxInTuningSpace2_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IAuxInTuningSpace2_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IAuxInTuningSpace2_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IAuxInTuningSpace2_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace2_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace2_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace2_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IAuxInTuningSpace2_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IAuxInTuningSpace2_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IAuxInTuningSpace2_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IAuxInTuningSpace2_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IAuxInTuningSpace2_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IAuxInTuningSpace2_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IAuxInTuningSpace2_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IAuxInTuningSpace2_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IAuxInTuningSpace2_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IAuxInTuningSpace2_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAuxInTuningSpace2 methods ***/
+#define IAuxInTuningSpace2_get_CountryCode(This,CountryCodeVal) (This)->lpVtbl->get_CountryCode(This,CountryCodeVal)
+#define IAuxInTuningSpace2_put_CountryCode(This,NewCountryCodeVal) (This)->lpVtbl->put_CountryCode(This,NewCountryCodeVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace2_QueryInterface(IAuxInTuningSpace2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAuxInTuningSpace2_AddRef(IAuxInTuningSpace2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAuxInTuningSpace2_Release(IAuxInTuningSpace2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace2_GetTypeInfoCount(IAuxInTuningSpace2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_GetTypeInfo(IAuxInTuningSpace2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_GetIDsOfNames(IAuxInTuningSpace2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_Invoke(IAuxInTuningSpace2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_UniqueName(IAuxInTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_UniqueName(IAuxInTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_FriendlyName(IAuxInTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_FriendlyName(IAuxInTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_CLSID(IAuxInTuningSpace2* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_NetworkType(IAuxInTuningSpace2* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_NetworkType(IAuxInTuningSpace2* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get__NetworkType(IAuxInTuningSpace2* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put__NetworkType(IAuxInTuningSpace2* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_CreateTuneRequest(IAuxInTuningSpace2* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_EnumCategoryGUIDs(IAuxInTuningSpace2* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_EnumDeviceMonikers(IAuxInTuningSpace2* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_DefaultPreferredComponentTypes(IAuxInTuningSpace2* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_DefaultPreferredComponentTypes(IAuxInTuningSpace2* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_FrequencyMapping(IAuxInTuningSpace2* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_FrequencyMapping(IAuxInTuningSpace2* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_DefaultLocator(IAuxInTuningSpace2* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_DefaultLocator(IAuxInTuningSpace2* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_Clone(IAuxInTuningSpace2* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAuxInTuningSpace2 methods ***/
+static FORCEINLINE HRESULT IAuxInTuningSpace2_get_CountryCode(IAuxInTuningSpace2* This,LONG *CountryCodeVal) {
+    return This->lpVtbl->get_CountryCode(This,CountryCodeVal);
+}
+static FORCEINLINE HRESULT IAuxInTuningSpace2_put_CountryCode(IAuxInTuningSpace2* This,LONG NewCountryCodeVal) {
+    return This->lpVtbl->put_CountryCode(This,NewCountryCodeVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAuxInTuningSpace2_get_CountryCode_Proxy(
+    IAuxInTuningSpace2* This,
+    LONG *CountryCodeVal);
+void __RPC_STUB IAuxInTuningSpace2_get_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAuxInTuningSpace2_put_CountryCode_Proxy(
+    IAuxInTuningSpace2* This,
+    LONG NewCountryCodeVal);
+void __RPC_STUB IAuxInTuningSpace2_put_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAuxInTuningSpace2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAnalogTVTuningSpace interface
+ */
+#ifndef __IAnalogTVTuningSpace_INTERFACE_DEFINED__
+#define __IAnalogTVTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAnalogTVTuningSpace, 0x2a6e293c, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2a6e293c-2595-11d3-b64c-00c04f79498e")
+IAnalogTVTuningSpace : public ITuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MinChannel(
+        LONG *MinChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinChannel(
+        LONG NewMinChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxChannel(
+        LONG *MaxChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxChannel(
+        LONG NewMaxChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InputType(
+        TunerInputType *InputTypeVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InputType(
+        TunerInputType NewInputTypeVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CountryCode(
+        LONG *CountryCodeVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CountryCode(
+        LONG NewCountryCodeVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAnalogTVTuningSpace, 0x2a6e293c, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IAnalogTVTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAnalogTVTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAnalogTVTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAnalogTVTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAnalogTVTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAnalogTVTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAnalogTVTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAnalogTVTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IAnalogTVTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IAnalogTVTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IAnalogTVTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IAnalogTVTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IAnalogTVTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IAnalogTVTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IAnalogTVTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IAnalogTVTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IAnalogTVTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IAnalogTVTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IAnalogTVTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IAnalogTVTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IAnalogTVTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IAnalogTVTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IAnalogTVTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IAnalogTVTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IAnalogTVTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IAnalogTVTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAnalogTVTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IAnalogTVTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
+        IAnalogTVTuningSpace* This,
+        LONG *MinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
+        IAnalogTVTuningSpace* This,
+        LONG NewMinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
+        IAnalogTVTuningSpace* This,
+        LONG *MaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
+        IAnalogTVTuningSpace* This,
+        LONG NewMaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_InputType)(
+        IAnalogTVTuningSpace* This,
+        TunerInputType *InputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_InputType)(
+        IAnalogTVTuningSpace* This,
+        TunerInputType NewInputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IAnalogTVTuningSpace* This,
+        LONG *CountryCodeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IAnalogTVTuningSpace* This,
+        LONG NewCountryCodeVal);
+
+    END_INTERFACE
+} IAnalogTVTuningSpaceVtbl;
+interface IAnalogTVTuningSpace {
+    CONST_VTBL IAnalogTVTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAnalogTVTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAnalogTVTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAnalogTVTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAnalogTVTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAnalogTVTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAnalogTVTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAnalogTVTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IAnalogTVTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IAnalogTVTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IAnalogTVTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IAnalogTVTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IAnalogTVTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IAnalogTVTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IAnalogTVTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IAnalogTVTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IAnalogTVTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IAnalogTVTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IAnalogTVTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IAnalogTVTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IAnalogTVTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IAnalogTVTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IAnalogTVTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IAnalogTVTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IAnalogTVTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IAnalogTVTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IAnalogTVTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAnalogTVTuningSpace methods ***/
+#define IAnalogTVTuningSpace_get_MinChannel(This,MinChannelVal) (This)->lpVtbl->get_MinChannel(This,MinChannelVal)
+#define IAnalogTVTuningSpace_put_MinChannel(This,NewMinChannelVal) (This)->lpVtbl->put_MinChannel(This,NewMinChannelVal)
+#define IAnalogTVTuningSpace_get_MaxChannel(This,MaxChannelVal) (This)->lpVtbl->get_MaxChannel(This,MaxChannelVal)
+#define IAnalogTVTuningSpace_put_MaxChannel(This,NewMaxChannelVal) (This)->lpVtbl->put_MaxChannel(This,NewMaxChannelVal)
+#define IAnalogTVTuningSpace_get_InputType(This,InputTypeVal) (This)->lpVtbl->get_InputType(This,InputTypeVal)
+#define IAnalogTVTuningSpace_put_InputType(This,NewInputTypeVal) (This)->lpVtbl->put_InputType(This,NewInputTypeVal)
+#define IAnalogTVTuningSpace_get_CountryCode(This,CountryCodeVal) (This)->lpVtbl->get_CountryCode(This,CountryCodeVal)
+#define IAnalogTVTuningSpace_put_CountryCode(This,NewCountryCodeVal) (This)->lpVtbl->put_CountryCode(This,NewCountryCodeVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_QueryInterface(IAnalogTVTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAnalogTVTuningSpace_AddRef(IAnalogTVTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAnalogTVTuningSpace_Release(IAnalogTVTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_GetTypeInfoCount(IAnalogTVTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_GetTypeInfo(IAnalogTVTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_GetIDsOfNames(IAnalogTVTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_Invoke(IAnalogTVTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_UniqueName(IAnalogTVTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_UniqueName(IAnalogTVTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_FriendlyName(IAnalogTVTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_FriendlyName(IAnalogTVTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_CLSID(IAnalogTVTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_NetworkType(IAnalogTVTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_NetworkType(IAnalogTVTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get__NetworkType(IAnalogTVTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put__NetworkType(IAnalogTVTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_CreateTuneRequest(IAnalogTVTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_EnumCategoryGUIDs(IAnalogTVTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_EnumDeviceMonikers(IAnalogTVTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_DefaultPreferredComponentTypes(IAnalogTVTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_DefaultPreferredComponentTypes(IAnalogTVTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_FrequencyMapping(IAnalogTVTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_FrequencyMapping(IAnalogTVTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_DefaultLocator(IAnalogTVTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_DefaultLocator(IAnalogTVTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_Clone(IAnalogTVTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAnalogTVTuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_MinChannel(IAnalogTVTuningSpace* This,LONG *MinChannelVal) {
+    return This->lpVtbl->get_MinChannel(This,MinChannelVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_MinChannel(IAnalogTVTuningSpace* This,LONG NewMinChannelVal) {
+    return This->lpVtbl->put_MinChannel(This,NewMinChannelVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_MaxChannel(IAnalogTVTuningSpace* This,LONG *MaxChannelVal) {
+    return This->lpVtbl->get_MaxChannel(This,MaxChannelVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_MaxChannel(IAnalogTVTuningSpace* This,LONG NewMaxChannelVal) {
+    return This->lpVtbl->put_MaxChannel(This,NewMaxChannelVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_InputType(IAnalogTVTuningSpace* This,TunerInputType *InputTypeVal) {
+    return This->lpVtbl->get_InputType(This,InputTypeVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_InputType(IAnalogTVTuningSpace* This,TunerInputType NewInputTypeVal) {
+    return This->lpVtbl->put_InputType(This,NewInputTypeVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_get_CountryCode(IAnalogTVTuningSpace* This,LONG *CountryCodeVal) {
+    return This->lpVtbl->get_CountryCode(This,CountryCodeVal);
+}
+static FORCEINLINE HRESULT IAnalogTVTuningSpace_put_CountryCode(IAnalogTVTuningSpace* This,LONG NewCountryCodeVal) {
+    return This->lpVtbl->put_CountryCode(This,NewCountryCodeVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MinChannel_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG *MinChannelVal);
+void __RPC_STUB IAnalogTVTuningSpace_get_MinChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MinChannel_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG NewMinChannelVal);
+void __RPC_STUB IAnalogTVTuningSpace_put_MinChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MaxChannel_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG *MaxChannelVal);
+void __RPC_STUB IAnalogTVTuningSpace_get_MaxChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MaxChannel_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG NewMaxChannelVal);
+void __RPC_STUB IAnalogTVTuningSpace_put_MaxChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_InputType_Proxy(
+    IAnalogTVTuningSpace* This,
+    TunerInputType *InputTypeVal);
+void __RPC_STUB IAnalogTVTuningSpace_get_InputType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_InputType_Proxy(
+    IAnalogTVTuningSpace* This,
+    TunerInputType NewInputTypeVal);
+void __RPC_STUB IAnalogTVTuningSpace_put_InputType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_CountryCode_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG *CountryCodeVal);
+void __RPC_STUB IAnalogTVTuningSpace_get_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_CountryCode_Proxy(
+    IAnalogTVTuningSpace* This,
+    LONG NewCountryCodeVal);
+void __RPC_STUB IAnalogTVTuningSpace_put_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAnalogTVTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IATSCTuningSpace interface
+ */
+#ifndef __IATSCTuningSpace_INTERFACE_DEFINED__
+#define __IATSCTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IATSCTuningSpace, 0x0369b4e2, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0369b4e2-45b6-11d3-b650-00c04f79498e")
+IATSCTuningSpace : public IAnalogTVTuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MinMinorChannel(
+        LONG *MinMinorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinMinorChannel(
+        LONG NewMinMinorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxMinorChannel(
+        LONG *MaxMinorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxMinorChannel(
+        LONG NewMaxMinorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MinPhysicalChannel(
+        LONG *MinPhysicalChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinPhysicalChannel(
+        LONG NewMinPhysicalChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxPhysicalChannel(
+        LONG *MaxPhysicalChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxPhysicalChannel(
+        LONG NewMaxPhysicalChannelVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IATSCTuningSpace, 0x0369b4e2, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IATSCTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IATSCTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IATSCTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IATSCTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IATSCTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IATSCTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IATSCTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IATSCTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IATSCTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IATSCTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IATSCTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IATSCTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IATSCTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IATSCTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IATSCTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IATSCTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IATSCTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IATSCTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IATSCTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IATSCTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IATSCTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IATSCTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IATSCTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IATSCTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IATSCTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IATSCTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IATSCTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IAnalogTVTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
+        IATSCTuningSpace* This,
+        LONG *MinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
+        IATSCTuningSpace* This,
+        LONG *MaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_InputType)(
+        IATSCTuningSpace* This,
+        TunerInputType *InputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_InputType)(
+        IATSCTuningSpace* This,
+        TunerInputType NewInputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IATSCTuningSpace* This,
+        LONG *CountryCodeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IATSCTuningSpace* This,
+        LONG NewCountryCodeVal);
+
+    /*** IATSCTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinMinorChannel)(
+        IATSCTuningSpace* This,
+        LONG *MinMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinMinorChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMinMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxMinorChannel)(
+        IATSCTuningSpace* This,
+        LONG *MaxMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxMinorChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMaxMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MinPhysicalChannel)(
+        IATSCTuningSpace* This,
+        LONG *MinPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinPhysicalChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMinPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxPhysicalChannel)(
+        IATSCTuningSpace* This,
+        LONG *MaxPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxPhysicalChannel)(
+        IATSCTuningSpace* This,
+        LONG NewMaxPhysicalChannelVal);
+
+    END_INTERFACE
+} IATSCTuningSpaceVtbl;
+interface IATSCTuningSpace {
+    CONST_VTBL IATSCTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IATSCTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IATSCTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IATSCTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IATSCTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IATSCTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IATSCTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IATSCTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IATSCTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IATSCTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IATSCTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IATSCTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IATSCTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IATSCTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IATSCTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IATSCTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IATSCTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IATSCTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IATSCTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IATSCTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IATSCTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IATSCTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IATSCTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IATSCTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IATSCTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IATSCTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IATSCTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAnalogTVTuningSpace methods ***/
+#define IATSCTuningSpace_get_MinChannel(This,MinChannelVal) (This)->lpVtbl->get_MinChannel(This,MinChannelVal)
+#define IATSCTuningSpace_put_MinChannel(This,NewMinChannelVal) (This)->lpVtbl->put_MinChannel(This,NewMinChannelVal)
+#define IATSCTuningSpace_get_MaxChannel(This,MaxChannelVal) (This)->lpVtbl->get_MaxChannel(This,MaxChannelVal)
+#define IATSCTuningSpace_put_MaxChannel(This,NewMaxChannelVal) (This)->lpVtbl->put_MaxChannel(This,NewMaxChannelVal)
+#define IATSCTuningSpace_get_InputType(This,InputTypeVal) (This)->lpVtbl->get_InputType(This,InputTypeVal)
+#define IATSCTuningSpace_put_InputType(This,NewInputTypeVal) (This)->lpVtbl->put_InputType(This,NewInputTypeVal)
+#define IATSCTuningSpace_get_CountryCode(This,CountryCodeVal) (This)->lpVtbl->get_CountryCode(This,CountryCodeVal)
+#define IATSCTuningSpace_put_CountryCode(This,NewCountryCodeVal) (This)->lpVtbl->put_CountryCode(This,NewCountryCodeVal)
+/*** IATSCTuningSpace methods ***/
+#define IATSCTuningSpace_get_MinMinorChannel(This,MinMinorChannelVal) (This)->lpVtbl->get_MinMinorChannel(This,MinMinorChannelVal)
+#define IATSCTuningSpace_put_MinMinorChannel(This,NewMinMinorChannelVal) (This)->lpVtbl->put_MinMinorChannel(This,NewMinMinorChannelVal)
+#define IATSCTuningSpace_get_MaxMinorChannel(This,MaxMinorChannelVal) (This)->lpVtbl->get_MaxMinorChannel(This,MaxMinorChannelVal)
+#define IATSCTuningSpace_put_MaxMinorChannel(This,NewMaxMinorChannelVal) (This)->lpVtbl->put_MaxMinorChannel(This,NewMaxMinorChannelVal)
+#define IATSCTuningSpace_get_MinPhysicalChannel(This,MinPhysicalChannelVal) (This)->lpVtbl->get_MinPhysicalChannel(This,MinPhysicalChannelVal)
+#define IATSCTuningSpace_put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) (This)->lpVtbl->put_MinPhysicalChannel(This,NewMinPhysicalChannelVal)
+#define IATSCTuningSpace_get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) (This)->lpVtbl->get_MaxPhysicalChannel(This,MaxPhysicalChannelVal)
+#define IATSCTuningSpace_put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) (This)->lpVtbl->put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IATSCTuningSpace_QueryInterface(IATSCTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IATSCTuningSpace_AddRef(IATSCTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IATSCTuningSpace_Release(IATSCTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IATSCTuningSpace_GetTypeInfoCount(IATSCTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_GetTypeInfo(IATSCTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_GetIDsOfNames(IATSCTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_Invoke(IATSCTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IATSCTuningSpace_get_UniqueName(IATSCTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_UniqueName(IATSCTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_FriendlyName(IATSCTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_FriendlyName(IATSCTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_CLSID(IATSCTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_NetworkType(IATSCTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_NetworkType(IATSCTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get__NetworkType(IATSCTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put__NetworkType(IATSCTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_CreateTuneRequest(IATSCTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_EnumCategoryGUIDs(IATSCTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_EnumDeviceMonikers(IATSCTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_DefaultPreferredComponentTypes(IATSCTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_DefaultPreferredComponentTypes(IATSCTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_FrequencyMapping(IATSCTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_FrequencyMapping(IATSCTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_DefaultLocator(IATSCTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_DefaultLocator(IATSCTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_Clone(IATSCTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAnalogTVTuningSpace methods ***/
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MinChannel(IATSCTuningSpace* This,LONG *MinChannelVal) {
+    return This->lpVtbl->get_MinChannel(This,MinChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MinChannel(IATSCTuningSpace* This,LONG NewMinChannelVal) {
+    return This->lpVtbl->put_MinChannel(This,NewMinChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MaxChannel(IATSCTuningSpace* This,LONG *MaxChannelVal) {
+    return This->lpVtbl->get_MaxChannel(This,MaxChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MaxChannel(IATSCTuningSpace* This,LONG NewMaxChannelVal) {
+    return This->lpVtbl->put_MaxChannel(This,NewMaxChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_InputType(IATSCTuningSpace* This,TunerInputType *InputTypeVal) {
+    return This->lpVtbl->get_InputType(This,InputTypeVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_InputType(IATSCTuningSpace* This,TunerInputType NewInputTypeVal) {
+    return This->lpVtbl->put_InputType(This,NewInputTypeVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_CountryCode(IATSCTuningSpace* This,LONG *CountryCodeVal) {
+    return This->lpVtbl->get_CountryCode(This,CountryCodeVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_CountryCode(IATSCTuningSpace* This,LONG NewCountryCodeVal) {
+    return This->lpVtbl->put_CountryCode(This,NewCountryCodeVal);
+}
+/*** IATSCTuningSpace methods ***/
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MinMinorChannel(IATSCTuningSpace* This,LONG *MinMinorChannelVal) {
+    return This->lpVtbl->get_MinMinorChannel(This,MinMinorChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MinMinorChannel(IATSCTuningSpace* This,LONG NewMinMinorChannelVal) {
+    return This->lpVtbl->put_MinMinorChannel(This,NewMinMinorChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MaxMinorChannel(IATSCTuningSpace* This,LONG *MaxMinorChannelVal) {
+    return This->lpVtbl->get_MaxMinorChannel(This,MaxMinorChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MaxMinorChannel(IATSCTuningSpace* This,LONG NewMaxMinorChannelVal) {
+    return This->lpVtbl->put_MaxMinorChannel(This,NewMaxMinorChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MinPhysicalChannel(IATSCTuningSpace* This,LONG *MinPhysicalChannelVal) {
+    return This->lpVtbl->get_MinPhysicalChannel(This,MinPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MinPhysicalChannel(IATSCTuningSpace* This,LONG NewMinPhysicalChannelVal) {
+    return This->lpVtbl->put_MinPhysicalChannel(This,NewMinPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_get_MaxPhysicalChannel(IATSCTuningSpace* This,LONG *MaxPhysicalChannelVal) {
+    return This->lpVtbl->get_MaxPhysicalChannel(This,MaxPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IATSCTuningSpace_put_MaxPhysicalChannel(IATSCTuningSpace* This,LONG NewMaxPhysicalChannelVal) {
+    return This->lpVtbl->put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinMinorChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG *MinMinorChannelVal);
+void __RPC_STUB IATSCTuningSpace_get_MinMinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinMinorChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG NewMinMinorChannelVal);
+void __RPC_STUB IATSCTuningSpace_put_MinMinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxMinorChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG *MaxMinorChannelVal);
+void __RPC_STUB IATSCTuningSpace_get_MaxMinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxMinorChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG NewMaxMinorChannelVal);
+void __RPC_STUB IATSCTuningSpace_put_MaxMinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinPhysicalChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG *MinPhysicalChannelVal);
+void __RPC_STUB IATSCTuningSpace_get_MinPhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinPhysicalChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG NewMinPhysicalChannelVal);
+void __RPC_STUB IATSCTuningSpace_put_MinPhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxPhysicalChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG *MaxPhysicalChannelVal);
+void __RPC_STUB IATSCTuningSpace_get_MaxPhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxPhysicalChannel_Proxy(
+    IATSCTuningSpace* This,
+    LONG NewMaxPhysicalChannelVal);
+void __RPC_STUB IATSCTuningSpace_put_MaxPhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IATSCTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDigitalCableTuningSpace interface
+ */
+#ifndef __IDigitalCableTuningSpace_INTERFACE_DEFINED__
+#define __IDigitalCableTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDigitalCableTuningSpace, 0x013f9f9c, 0xb449, 0x4ec7, 0xa6,0xd2, 0x9d,0x4f,0x2f,0xc7,0x0a,0xe5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("013f9f9c-b449-4ec7-a6d2-9d4f2fc70ae5")
+IDigitalCableTuningSpace : public IATSCTuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MinMajorChannel(
+        LONG *MinMajorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinMajorChannel(
+        LONG NewMinMajorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxMajorChannel(
+        LONG *MaxMajorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxMajorChannel(
+        LONG NewMaxMajorChannelVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MinSourceID(
+        LONG *MinSourceIDVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinSourceID(
+        LONG NewMinSourceIDVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxSourceID(
+        LONG *MaxSourceIDVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxSourceID(
+        LONG NewMaxSourceIDVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDigitalCableTuningSpace, 0x013f9f9c, 0xb449, 0x4ec7, 0xa6,0xd2, 0x9d,0x4f,0x2f,0xc7,0x0a,0xe5)
+#endif
+#else
+typedef struct IDigitalCableTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDigitalCableTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDigitalCableTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDigitalCableTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDigitalCableTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDigitalCableTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDigitalCableTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDigitalCableTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IDigitalCableTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IDigitalCableTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IDigitalCableTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IDigitalCableTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IDigitalCableTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IDigitalCableTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IDigitalCableTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IDigitalCableTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IDigitalCableTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IDigitalCableTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IDigitalCableTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IDigitalCableTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IDigitalCableTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IDigitalCableTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IDigitalCableTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IDigitalCableTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IDigitalCableTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IDigitalCableTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDigitalCableTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IAnalogTVTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMinChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMaxChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_InputType)(
+        IDigitalCableTuningSpace* This,
+        TunerInputType *InputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_InputType)(
+        IDigitalCableTuningSpace* This,
+        TunerInputType NewInputTypeVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IDigitalCableTuningSpace* This,
+        LONG *CountryCodeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IDigitalCableTuningSpace* This,
+        LONG NewCountryCodeVal);
+
+    /*** IATSCTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinMinorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MinMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinMinorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMinMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxMinorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MaxMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxMinorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMaxMinorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MinPhysicalChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MinPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinPhysicalChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMinPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxPhysicalChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MaxPhysicalChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxPhysicalChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMaxPhysicalChannelVal);
+
+    /*** IDigitalCableTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinMajorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MinMajorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinMajorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMinMajorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxMajorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG *MaxMajorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxMajorChannel)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMaxMajorChannelVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MinSourceID)(
+        IDigitalCableTuningSpace* This,
+        LONG *MinSourceIDVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinSourceID)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMinSourceIDVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxSourceID)(
+        IDigitalCableTuningSpace* This,
+        LONG *MaxSourceIDVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxSourceID)(
+        IDigitalCableTuningSpace* This,
+        LONG NewMaxSourceIDVal);
+
+    END_INTERFACE
+} IDigitalCableTuningSpaceVtbl;
+interface IDigitalCableTuningSpace {
+    CONST_VTBL IDigitalCableTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDigitalCableTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDigitalCableTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDigitalCableTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDigitalCableTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDigitalCableTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDigitalCableTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDigitalCableTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IDigitalCableTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IDigitalCableTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IDigitalCableTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IDigitalCableTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IDigitalCableTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IDigitalCableTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IDigitalCableTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IDigitalCableTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IDigitalCableTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IDigitalCableTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IDigitalCableTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IDigitalCableTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IDigitalCableTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IDigitalCableTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IDigitalCableTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IDigitalCableTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IDigitalCableTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IDigitalCableTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IDigitalCableTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAnalogTVTuningSpace methods ***/
+#define IDigitalCableTuningSpace_get_MinChannel(This,MinChannelVal) (This)->lpVtbl->get_MinChannel(This,MinChannelVal)
+#define IDigitalCableTuningSpace_put_MinChannel(This,NewMinChannelVal) (This)->lpVtbl->put_MinChannel(This,NewMinChannelVal)
+#define IDigitalCableTuningSpace_get_MaxChannel(This,MaxChannelVal) (This)->lpVtbl->get_MaxChannel(This,MaxChannelVal)
+#define IDigitalCableTuningSpace_put_MaxChannel(This,NewMaxChannelVal) (This)->lpVtbl->put_MaxChannel(This,NewMaxChannelVal)
+#define IDigitalCableTuningSpace_get_InputType(This,InputTypeVal) (This)->lpVtbl->get_InputType(This,InputTypeVal)
+#define IDigitalCableTuningSpace_put_InputType(This,NewInputTypeVal) (This)->lpVtbl->put_InputType(This,NewInputTypeVal)
+#define IDigitalCableTuningSpace_get_CountryCode(This,CountryCodeVal) (This)->lpVtbl->get_CountryCode(This,CountryCodeVal)
+#define IDigitalCableTuningSpace_put_CountryCode(This,NewCountryCodeVal) (This)->lpVtbl->put_CountryCode(This,NewCountryCodeVal)
+/*** IATSCTuningSpace methods ***/
+#define IDigitalCableTuningSpace_get_MinMinorChannel(This,MinMinorChannelVal) (This)->lpVtbl->get_MinMinorChannel(This,MinMinorChannelVal)
+#define IDigitalCableTuningSpace_put_MinMinorChannel(This,NewMinMinorChannelVal) (This)->lpVtbl->put_MinMinorChannel(This,NewMinMinorChannelVal)
+#define IDigitalCableTuningSpace_get_MaxMinorChannel(This,MaxMinorChannelVal) (This)->lpVtbl->get_MaxMinorChannel(This,MaxMinorChannelVal)
+#define IDigitalCableTuningSpace_put_MaxMinorChannel(This,NewMaxMinorChannelVal) (This)->lpVtbl->put_MaxMinorChannel(This,NewMaxMinorChannelVal)
+#define IDigitalCableTuningSpace_get_MinPhysicalChannel(This,MinPhysicalChannelVal) (This)->lpVtbl->get_MinPhysicalChannel(This,MinPhysicalChannelVal)
+#define IDigitalCableTuningSpace_put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) (This)->lpVtbl->put_MinPhysicalChannel(This,NewMinPhysicalChannelVal)
+#define IDigitalCableTuningSpace_get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) (This)->lpVtbl->get_MaxPhysicalChannel(This,MaxPhysicalChannelVal)
+#define IDigitalCableTuningSpace_put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) (This)->lpVtbl->put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal)
+/*** IDigitalCableTuningSpace methods ***/
+#define IDigitalCableTuningSpace_get_MinMajorChannel(This,MinMajorChannelVal) (This)->lpVtbl->get_MinMajorChannel(This,MinMajorChannelVal)
+#define IDigitalCableTuningSpace_put_MinMajorChannel(This,NewMinMajorChannelVal) (This)->lpVtbl->put_MinMajorChannel(This,NewMinMajorChannelVal)
+#define IDigitalCableTuningSpace_get_MaxMajorChannel(This,MaxMajorChannelVal) (This)->lpVtbl->get_MaxMajorChannel(This,MaxMajorChannelVal)
+#define IDigitalCableTuningSpace_put_MaxMajorChannel(This,NewMaxMajorChannelVal) (This)->lpVtbl->put_MaxMajorChannel(This,NewMaxMajorChannelVal)
+#define IDigitalCableTuningSpace_get_MinSourceID(This,MinSourceIDVal) (This)->lpVtbl->get_MinSourceID(This,MinSourceIDVal)
+#define IDigitalCableTuningSpace_put_MinSourceID(This,NewMinSourceIDVal) (This)->lpVtbl->put_MinSourceID(This,NewMinSourceIDVal)
+#define IDigitalCableTuningSpace_get_MaxSourceID(This,MaxSourceIDVal) (This)->lpVtbl->get_MaxSourceID(This,MaxSourceIDVal)
+#define IDigitalCableTuningSpace_put_MaxSourceID(This,NewMaxSourceIDVal) (This)->lpVtbl->put_MaxSourceID(This,NewMaxSourceIDVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_QueryInterface(IDigitalCableTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDigitalCableTuningSpace_AddRef(IDigitalCableTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDigitalCableTuningSpace_Release(IDigitalCableTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_GetTypeInfoCount(IDigitalCableTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_GetTypeInfo(IDigitalCableTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_GetIDsOfNames(IDigitalCableTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_Invoke(IDigitalCableTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_UniqueName(IDigitalCableTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_UniqueName(IDigitalCableTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_FriendlyName(IDigitalCableTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_FriendlyName(IDigitalCableTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_CLSID(IDigitalCableTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_NetworkType(IDigitalCableTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_NetworkType(IDigitalCableTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get__NetworkType(IDigitalCableTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put__NetworkType(IDigitalCableTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_CreateTuneRequest(IDigitalCableTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_EnumCategoryGUIDs(IDigitalCableTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_EnumDeviceMonikers(IDigitalCableTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_DefaultPreferredComponentTypes(IDigitalCableTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_DefaultPreferredComponentTypes(IDigitalCableTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_FrequencyMapping(IDigitalCableTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_FrequencyMapping(IDigitalCableTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_DefaultLocator(IDigitalCableTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_DefaultLocator(IDigitalCableTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_Clone(IDigitalCableTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAnalogTVTuningSpace methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MinChannel(IDigitalCableTuningSpace* This,LONG *MinChannelVal) {
+    return This->lpVtbl->get_MinChannel(This,MinChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MinChannel(IDigitalCableTuningSpace* This,LONG NewMinChannelVal) {
+    return This->lpVtbl->put_MinChannel(This,NewMinChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MaxChannel(IDigitalCableTuningSpace* This,LONG *MaxChannelVal) {
+    return This->lpVtbl->get_MaxChannel(This,MaxChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MaxChannel(IDigitalCableTuningSpace* This,LONG NewMaxChannelVal) {
+    return This->lpVtbl->put_MaxChannel(This,NewMaxChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_InputType(IDigitalCableTuningSpace* This,TunerInputType *InputTypeVal) {
+    return This->lpVtbl->get_InputType(This,InputTypeVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_InputType(IDigitalCableTuningSpace* This,TunerInputType NewInputTypeVal) {
+    return This->lpVtbl->put_InputType(This,NewInputTypeVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_CountryCode(IDigitalCableTuningSpace* This,LONG *CountryCodeVal) {
+    return This->lpVtbl->get_CountryCode(This,CountryCodeVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_CountryCode(IDigitalCableTuningSpace* This,LONG NewCountryCodeVal) {
+    return This->lpVtbl->put_CountryCode(This,NewCountryCodeVal);
+}
+/*** IATSCTuningSpace methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MinMinorChannel(IDigitalCableTuningSpace* This,LONG *MinMinorChannelVal) {
+    return This->lpVtbl->get_MinMinorChannel(This,MinMinorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MinMinorChannel(IDigitalCableTuningSpace* This,LONG NewMinMinorChannelVal) {
+    return This->lpVtbl->put_MinMinorChannel(This,NewMinMinorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MaxMinorChannel(IDigitalCableTuningSpace* This,LONG *MaxMinorChannelVal) {
+    return This->lpVtbl->get_MaxMinorChannel(This,MaxMinorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MaxMinorChannel(IDigitalCableTuningSpace* This,LONG NewMaxMinorChannelVal) {
+    return This->lpVtbl->put_MaxMinorChannel(This,NewMaxMinorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MinPhysicalChannel(IDigitalCableTuningSpace* This,LONG *MinPhysicalChannelVal) {
+    return This->lpVtbl->get_MinPhysicalChannel(This,MinPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MinPhysicalChannel(IDigitalCableTuningSpace* This,LONG NewMinPhysicalChannelVal) {
+    return This->lpVtbl->put_MinPhysicalChannel(This,NewMinPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MaxPhysicalChannel(IDigitalCableTuningSpace* This,LONG *MaxPhysicalChannelVal) {
+    return This->lpVtbl->get_MaxPhysicalChannel(This,MaxPhysicalChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MaxPhysicalChannel(IDigitalCableTuningSpace* This,LONG NewMaxPhysicalChannelVal) {
+    return This->lpVtbl->put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal);
+}
+/*** IDigitalCableTuningSpace methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MinMajorChannel(IDigitalCableTuningSpace* This,LONG *MinMajorChannelVal) {
+    return This->lpVtbl->get_MinMajorChannel(This,MinMajorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MinMajorChannel(IDigitalCableTuningSpace* This,LONG NewMinMajorChannelVal) {
+    return This->lpVtbl->put_MinMajorChannel(This,NewMinMajorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MaxMajorChannel(IDigitalCableTuningSpace* This,LONG *MaxMajorChannelVal) {
+    return This->lpVtbl->get_MaxMajorChannel(This,MaxMajorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MaxMajorChannel(IDigitalCableTuningSpace* This,LONG NewMaxMajorChannelVal) {
+    return This->lpVtbl->put_MaxMajorChannel(This,NewMaxMajorChannelVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MinSourceID(IDigitalCableTuningSpace* This,LONG *MinSourceIDVal) {
+    return This->lpVtbl->get_MinSourceID(This,MinSourceIDVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MinSourceID(IDigitalCableTuningSpace* This,LONG NewMinSourceIDVal) {
+    return This->lpVtbl->put_MinSourceID(This,NewMinSourceIDVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_get_MaxSourceID(IDigitalCableTuningSpace* This,LONG *MaxSourceIDVal) {
+    return This->lpVtbl->get_MaxSourceID(This,MaxSourceIDVal);
+}
+static FORCEINLINE HRESULT IDigitalCableTuningSpace_put_MaxSourceID(IDigitalCableTuningSpace* This,LONG NewMaxSourceIDVal) {
+    return This->lpVtbl->put_MaxSourceID(This,NewMaxSourceIDVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MinMajorChannel_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG *MinMajorChannelVal);
+void __RPC_STUB IDigitalCableTuningSpace_get_MinMajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MinMajorChannel_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG NewMinMajorChannelVal);
+void __RPC_STUB IDigitalCableTuningSpace_put_MinMajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MaxMajorChannel_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG *MaxMajorChannelVal);
+void __RPC_STUB IDigitalCableTuningSpace_get_MaxMajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MaxMajorChannel_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG NewMaxMajorChannelVal);
+void __RPC_STUB IDigitalCableTuningSpace_put_MaxMajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MinSourceID_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG *MinSourceIDVal);
+void __RPC_STUB IDigitalCableTuningSpace_get_MinSourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MinSourceID_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG NewMinSourceIDVal);
+void __RPC_STUB IDigitalCableTuningSpace_put_MinSourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MaxSourceID_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG *MaxSourceIDVal);
+void __RPC_STUB IDigitalCableTuningSpace_get_MaxSourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MaxSourceID_Proxy(
+    IDigitalCableTuningSpace* This,
+    LONG NewMaxSourceIDVal);
+void __RPC_STUB IDigitalCableTuningSpace_put_MaxSourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDigitalCableTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAnalogRadioTuningSpace interface
+ */
+#ifndef __IAnalogRadioTuningSpace_INTERFACE_DEFINED__
+#define __IAnalogRadioTuningSpace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAnalogRadioTuningSpace, 0x2a6e293b, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2a6e293b-2595-11d3-b64c-00c04f79498e")
+IAnalogRadioTuningSpace : public ITuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MinFrequency(
+        LONG *MinFrequencyVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinFrequency(
+        LONG NewMinFrequencyVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaxFrequency(
+        LONG *MaxFrequencyVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MaxFrequency(
+        LONG NewMaxFrequencyVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Step(
+        LONG *StepVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Step(
+        LONG NewStepVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAnalogRadioTuningSpace, 0x2a6e293b, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IAnalogRadioTuningSpaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAnalogRadioTuningSpace* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAnalogRadioTuningSpace* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAnalogRadioTuningSpace* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAnalogRadioTuningSpace* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAnalogRadioTuningSpace* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAnalogRadioTuningSpace* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAnalogRadioTuningSpace* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IAnalogRadioTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IAnalogRadioTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IAnalogRadioTuningSpace* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IAnalogRadioTuningSpace* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IAnalogRadioTuningSpace* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IAnalogRadioTuningSpace* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IAnalogRadioTuningSpace* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IAnalogRadioTuningSpace* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IAnalogRadioTuningSpace* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IAnalogRadioTuningSpace* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IAnalogRadioTuningSpace* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IAnalogRadioTuningSpace* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IAnalogRadioTuningSpace* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IAnalogRadioTuningSpace* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IAnalogRadioTuningSpace* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IAnalogRadioTuningSpace* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IAnalogRadioTuningSpace* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IAnalogRadioTuningSpace* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAnalogRadioTuningSpace* This,
+        ITuningSpace **NewTS);
+
+    /*** IAnalogRadioTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinFrequency)(
+        IAnalogRadioTuningSpace* This,
+        LONG *MinFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinFrequency)(
+        IAnalogRadioTuningSpace* This,
+        LONG NewMinFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxFrequency)(
+        IAnalogRadioTuningSpace* This,
+        LONG *MaxFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxFrequency)(
+        IAnalogRadioTuningSpace* This,
+        LONG NewMaxFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Step)(
+        IAnalogRadioTuningSpace* This,
+        LONG *StepVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Step)(
+        IAnalogRadioTuningSpace* This,
+        LONG NewStepVal);
+
+    END_INTERFACE
+} IAnalogRadioTuningSpaceVtbl;
+interface IAnalogRadioTuningSpace {
+    CONST_VTBL IAnalogRadioTuningSpaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAnalogRadioTuningSpace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAnalogRadioTuningSpace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAnalogRadioTuningSpace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAnalogRadioTuningSpace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAnalogRadioTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAnalogRadioTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAnalogRadioTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IAnalogRadioTuningSpace_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IAnalogRadioTuningSpace_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IAnalogRadioTuningSpace_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IAnalogRadioTuningSpace_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IAnalogRadioTuningSpace_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IAnalogRadioTuningSpace_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IAnalogRadioTuningSpace_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IAnalogRadioTuningSpace_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IAnalogRadioTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IAnalogRadioTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IAnalogRadioTuningSpace_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IAnalogRadioTuningSpace_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IAnalogRadioTuningSpace_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IAnalogRadioTuningSpace_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IAnalogRadioTuningSpace_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAnalogRadioTuningSpace methods ***/
+#define IAnalogRadioTuningSpace_get_MinFrequency(This,MinFrequencyVal) (This)->lpVtbl->get_MinFrequency(This,MinFrequencyVal)
+#define IAnalogRadioTuningSpace_put_MinFrequency(This,NewMinFrequencyVal) (This)->lpVtbl->put_MinFrequency(This,NewMinFrequencyVal)
+#define IAnalogRadioTuningSpace_get_MaxFrequency(This,MaxFrequencyVal) (This)->lpVtbl->get_MaxFrequency(This,MaxFrequencyVal)
+#define IAnalogRadioTuningSpace_put_MaxFrequency(This,NewMaxFrequencyVal) (This)->lpVtbl->put_MaxFrequency(This,NewMaxFrequencyVal)
+#define IAnalogRadioTuningSpace_get_Step(This,StepVal) (This)->lpVtbl->get_Step(This,StepVal)
+#define IAnalogRadioTuningSpace_put_Step(This,NewStepVal) (This)->lpVtbl->put_Step(This,NewStepVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_QueryInterface(IAnalogRadioTuningSpace* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAnalogRadioTuningSpace_AddRef(IAnalogRadioTuningSpace* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAnalogRadioTuningSpace_Release(IAnalogRadioTuningSpace* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_GetTypeInfoCount(IAnalogRadioTuningSpace* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_GetTypeInfo(IAnalogRadioTuningSpace* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_GetIDsOfNames(IAnalogRadioTuningSpace* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_Invoke(IAnalogRadioTuningSpace* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_UniqueName(IAnalogRadioTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_UniqueName(IAnalogRadioTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_FriendlyName(IAnalogRadioTuningSpace* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_FriendlyName(IAnalogRadioTuningSpace* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_CLSID(IAnalogRadioTuningSpace* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_NetworkType(IAnalogRadioTuningSpace* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_NetworkType(IAnalogRadioTuningSpace* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get__NetworkType(IAnalogRadioTuningSpace* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put__NetworkType(IAnalogRadioTuningSpace* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_CreateTuneRequest(IAnalogRadioTuningSpace* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_EnumCategoryGUIDs(IAnalogRadioTuningSpace* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_EnumDeviceMonikers(IAnalogRadioTuningSpace* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_DefaultPreferredComponentTypes(IAnalogRadioTuningSpace* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_DefaultPreferredComponentTypes(IAnalogRadioTuningSpace* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_FrequencyMapping(IAnalogRadioTuningSpace* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_FrequencyMapping(IAnalogRadioTuningSpace* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_DefaultLocator(IAnalogRadioTuningSpace* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_DefaultLocator(IAnalogRadioTuningSpace* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_Clone(IAnalogRadioTuningSpace* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAnalogRadioTuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_MinFrequency(IAnalogRadioTuningSpace* This,LONG *MinFrequencyVal) {
+    return This->lpVtbl->get_MinFrequency(This,MinFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_MinFrequency(IAnalogRadioTuningSpace* This,LONG NewMinFrequencyVal) {
+    return This->lpVtbl->put_MinFrequency(This,NewMinFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_MaxFrequency(IAnalogRadioTuningSpace* This,LONG *MaxFrequencyVal) {
+    return This->lpVtbl->get_MaxFrequency(This,MaxFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_MaxFrequency(IAnalogRadioTuningSpace* This,LONG NewMaxFrequencyVal) {
+    return This->lpVtbl->put_MaxFrequency(This,NewMaxFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_get_Step(IAnalogRadioTuningSpace* This,LONG *StepVal) {
+    return This->lpVtbl->get_Step(This,StepVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace_put_Step(IAnalogRadioTuningSpace* This,LONG NewStepVal) {
+    return This->lpVtbl->put_Step(This,NewStepVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MinFrequency_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG *MinFrequencyVal);
+void __RPC_STUB IAnalogRadioTuningSpace_get_MinFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MinFrequency_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG NewMinFrequencyVal);
+void __RPC_STUB IAnalogRadioTuningSpace_put_MinFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MaxFrequency_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG *MaxFrequencyVal);
+void __RPC_STUB IAnalogRadioTuningSpace_get_MaxFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MaxFrequency_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG NewMaxFrequencyVal);
+void __RPC_STUB IAnalogRadioTuningSpace_put_MaxFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_Step_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG *StepVal);
+void __RPC_STUB IAnalogRadioTuningSpace_get_Step_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_Step_Proxy(
+    IAnalogRadioTuningSpace* This,
+    LONG NewStepVal);
+void __RPC_STUB IAnalogRadioTuningSpace_put_Step_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAnalogRadioTuningSpace2 interface
+ */
+#ifndef __IAnalogRadioTuningSpace2_INTERFACE_DEFINED__
+#define __IAnalogRadioTuningSpace2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAnalogRadioTuningSpace2, 0x39dd45da, 0x2da8, 0x46ba, 0x8a,0x8a, 0x87,0xe2,0xb7,0x3d,0x98,0x3a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("39dd45da-2da8-46ba-8a8a-87e2b73d983a")
+IAnalogRadioTuningSpace2 : public IAnalogRadioTuningSpace
+{
+    virtual HRESULT STDMETHODCALLTYPE get_CountryCode(
+        LONG *CountryCodeVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CountryCode(
+        LONG NewCountryCodeVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAnalogRadioTuningSpace2, 0x39dd45da, 0x2da8, 0x46ba, 0x8a,0x8a, 0x87,0xe2,0xb7,0x3d,0x98,0x3a)
+#endif
+#else
+typedef struct IAnalogRadioTuningSpace2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAnalogRadioTuningSpace2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAnalogRadioTuningSpace2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAnalogRadioTuningSpace2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAnalogRadioTuningSpace2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAnalogRadioTuningSpace2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAnalogRadioTuningSpace2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAnalogRadioTuningSpace2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_CLSID)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR *SpaceCLSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
+        IAnalogRadioTuningSpace2* This,
+        GUID *NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
+        IAnalogRadioTuningSpace2* This,
+        REFCLSID NetworkTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IAnalogRadioTuningSpace2* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
+        IAnalogRadioTuningSpace2* This,
+        IEnumGUID **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
+        IAnalogRadioTuningSpace2* This,
+        IEnumMoniker **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
+        IAnalogRadioTuningSpace2* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
+        IAnalogRadioTuningSpace2* This,
+        IComponentTypes *NewComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR *pMapping);
+
+    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
+        IAnalogRadioTuningSpace2* This,
+        BSTR Mapping);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
+        IAnalogRadioTuningSpace2* This,
+        ILocator **LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
+        IAnalogRadioTuningSpace2* This,
+        ILocator *LocatorVal);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAnalogRadioTuningSpace2* This,
+        ITuningSpace **NewTS);
+
+    /*** IAnalogRadioTuningSpace methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinFrequency)(
+        IAnalogRadioTuningSpace2* This,
+        LONG *MinFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinFrequency)(
+        IAnalogRadioTuningSpace2* This,
+        LONG NewMinFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaxFrequency)(
+        IAnalogRadioTuningSpace2* This,
+        LONG *MaxFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_MaxFrequency)(
+        IAnalogRadioTuningSpace2* This,
+        LONG NewMaxFrequencyVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Step)(
+        IAnalogRadioTuningSpace2* This,
+        LONG *StepVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Step)(
+        IAnalogRadioTuningSpace2* This,
+        LONG NewStepVal);
+
+    /*** IAnalogRadioTuningSpace2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
+        IAnalogRadioTuningSpace2* This,
+        LONG *CountryCodeVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
+        IAnalogRadioTuningSpace2* This,
+        LONG NewCountryCodeVal);
+
+    END_INTERFACE
+} IAnalogRadioTuningSpace2Vtbl;
+interface IAnalogRadioTuningSpace2 {
+    CONST_VTBL IAnalogRadioTuningSpace2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAnalogRadioTuningSpace2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAnalogRadioTuningSpace2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAnalogRadioTuningSpace2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAnalogRadioTuningSpace2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAnalogRadioTuningSpace2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAnalogRadioTuningSpace2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAnalogRadioTuningSpace2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuningSpace methods ***/
+#define IAnalogRadioTuningSpace2_get_UniqueName(This,Name) (This)->lpVtbl->get_UniqueName(This,Name)
+#define IAnalogRadioTuningSpace2_put_UniqueName(This,Name) (This)->lpVtbl->put_UniqueName(This,Name)
+#define IAnalogRadioTuningSpace2_get_FriendlyName(This,Name) (This)->lpVtbl->get_FriendlyName(This,Name)
+#define IAnalogRadioTuningSpace2_put_FriendlyName(This,Name) (This)->lpVtbl->put_FriendlyName(This,Name)
+#define IAnalogRadioTuningSpace2_get_CLSID(This,SpaceCLSID) (This)->lpVtbl->get_CLSID(This,SpaceCLSID)
+#define IAnalogRadioTuningSpace2_get_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get_NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace2_put_NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put_NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace2_get__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->get__NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace2_put__NetworkType(This,NetworkTypeGuid) (This)->lpVtbl->put__NetworkType(This,NetworkTypeGuid)
+#define IAnalogRadioTuningSpace2_CreateTuneRequest(This,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuneRequest)
+#define IAnalogRadioTuningSpace2_EnumCategoryGUIDs(This,ppEnum) (This)->lpVtbl->EnumCategoryGUIDs(This,ppEnum)
+#define IAnalogRadioTuningSpace2_EnumDeviceMonikers(This,ppEnum) (This)->lpVtbl->EnumDeviceMonikers(This,ppEnum)
+#define IAnalogRadioTuningSpace2_get_DefaultPreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes)
+#define IAnalogRadioTuningSpace2_put_DefaultPreferredComponentTypes(This,NewComponentTypes) (This)->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes)
+#define IAnalogRadioTuningSpace2_get_FrequencyMapping(This,pMapping) (This)->lpVtbl->get_FrequencyMapping(This,pMapping)
+#define IAnalogRadioTuningSpace2_put_FrequencyMapping(This,Mapping) (This)->lpVtbl->put_FrequencyMapping(This,Mapping)
+#define IAnalogRadioTuningSpace2_get_DefaultLocator(This,LocatorVal) (This)->lpVtbl->get_DefaultLocator(This,LocatorVal)
+#define IAnalogRadioTuningSpace2_put_DefaultLocator(This,LocatorVal) (This)->lpVtbl->put_DefaultLocator(This,LocatorVal)
+#define IAnalogRadioTuningSpace2_Clone(This,NewTS) (This)->lpVtbl->Clone(This,NewTS)
+/*** IAnalogRadioTuningSpace methods ***/
+#define IAnalogRadioTuningSpace2_get_MinFrequency(This,MinFrequencyVal) (This)->lpVtbl->get_MinFrequency(This,MinFrequencyVal)
+#define IAnalogRadioTuningSpace2_put_MinFrequency(This,NewMinFrequencyVal) (This)->lpVtbl->put_MinFrequency(This,NewMinFrequencyVal)
+#define IAnalogRadioTuningSpace2_get_MaxFrequency(This,MaxFrequencyVal) (This)->lpVtbl->get_MaxFrequency(This,MaxFrequencyVal)
+#define IAnalogRadioTuningSpace2_put_MaxFrequency(This,NewMaxFrequencyVal) (This)->lpVtbl->put_MaxFrequency(This,NewMaxFrequencyVal)
+#define IAnalogRadioTuningSpace2_get_Step(This,StepVal) (This)->lpVtbl->get_Step(This,StepVal)
+#define IAnalogRadioTuningSpace2_put_Step(This,NewStepVal) (This)->lpVtbl->put_Step(This,NewStepVal)
+/*** IAnalogRadioTuningSpace2 methods ***/
+#define IAnalogRadioTuningSpace2_get_CountryCode(This,CountryCodeVal) (This)->lpVtbl->get_CountryCode(This,CountryCodeVal)
+#define IAnalogRadioTuningSpace2_put_CountryCode(This,NewCountryCodeVal) (This)->lpVtbl->put_CountryCode(This,NewCountryCodeVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_QueryInterface(IAnalogRadioTuningSpace2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAnalogRadioTuningSpace2_AddRef(IAnalogRadioTuningSpace2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAnalogRadioTuningSpace2_Release(IAnalogRadioTuningSpace2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_GetTypeInfoCount(IAnalogRadioTuningSpace2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_GetTypeInfo(IAnalogRadioTuningSpace2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_GetIDsOfNames(IAnalogRadioTuningSpace2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_Invoke(IAnalogRadioTuningSpace2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_UniqueName(IAnalogRadioTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_UniqueName(IAnalogRadioTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_UniqueName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_FriendlyName(IAnalogRadioTuningSpace2* This,BSTR *Name) {
+    return This->lpVtbl->get_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_FriendlyName(IAnalogRadioTuningSpace2* This,BSTR Name) {
+    return This->lpVtbl->put_FriendlyName(This,Name);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_CLSID(IAnalogRadioTuningSpace2* This,BSTR *SpaceCLSID) {
+    return This->lpVtbl->get_CLSID(This,SpaceCLSID);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_NetworkType(IAnalogRadioTuningSpace2* This,BSTR *NetworkTypeGuid) {
+    return This->lpVtbl->get_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_NetworkType(IAnalogRadioTuningSpace2* This,BSTR NetworkTypeGuid) {
+    return This->lpVtbl->put_NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get__NetworkType(IAnalogRadioTuningSpace2* This,GUID *NetworkTypeGuid) {
+    return This->lpVtbl->get__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put__NetworkType(IAnalogRadioTuningSpace2* This,REFCLSID NetworkTypeGuid) {
+    return This->lpVtbl->put__NetworkType(This,NetworkTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_CreateTuneRequest(IAnalogRadioTuningSpace2* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_EnumCategoryGUIDs(IAnalogRadioTuningSpace2* This,IEnumGUID **ppEnum) {
+    return This->lpVtbl->EnumCategoryGUIDs(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_EnumDeviceMonikers(IAnalogRadioTuningSpace2* This,IEnumMoniker **ppEnum) {
+    return This->lpVtbl->EnumDeviceMonikers(This,ppEnum);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_DefaultPreferredComponentTypes(IAnalogRadioTuningSpace2* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_DefaultPreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_DefaultPreferredComponentTypes(IAnalogRadioTuningSpace2* This,IComponentTypes *NewComponentTypes) {
+    return This->lpVtbl->put_DefaultPreferredComponentTypes(This,NewComponentTypes);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_FrequencyMapping(IAnalogRadioTuningSpace2* This,BSTR *pMapping) {
+    return This->lpVtbl->get_FrequencyMapping(This,pMapping);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_FrequencyMapping(IAnalogRadioTuningSpace2* This,BSTR Mapping) {
+    return This->lpVtbl->put_FrequencyMapping(This,Mapping);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_DefaultLocator(IAnalogRadioTuningSpace2* This,ILocator **LocatorVal) {
+    return This->lpVtbl->get_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_DefaultLocator(IAnalogRadioTuningSpace2* This,ILocator *LocatorVal) {
+    return This->lpVtbl->put_DefaultLocator(This,LocatorVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_Clone(IAnalogRadioTuningSpace2* This,ITuningSpace **NewTS) {
+    return This->lpVtbl->Clone(This,NewTS);
+}
+/*** IAnalogRadioTuningSpace methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_MinFrequency(IAnalogRadioTuningSpace2* This,LONG *MinFrequencyVal) {
+    return This->lpVtbl->get_MinFrequency(This,MinFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_MinFrequency(IAnalogRadioTuningSpace2* This,LONG NewMinFrequencyVal) {
+    return This->lpVtbl->put_MinFrequency(This,NewMinFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_MaxFrequency(IAnalogRadioTuningSpace2* This,LONG *MaxFrequencyVal) {
+    return This->lpVtbl->get_MaxFrequency(This,MaxFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_MaxFrequency(IAnalogRadioTuningSpace2* This,LONG NewMaxFrequencyVal) {
+    return This->lpVtbl->put_MaxFrequency(This,NewMaxFrequencyVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_Step(IAnalogRadioTuningSpace2* This,LONG *StepVal) {
+    return This->lpVtbl->get_Step(This,StepVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_Step(IAnalogRadioTuningSpace2* This,LONG NewStepVal) {
+    return This->lpVtbl->put_Step(This,NewStepVal);
+}
+/*** IAnalogRadioTuningSpace2 methods ***/
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_get_CountryCode(IAnalogRadioTuningSpace2* This,LONG *CountryCodeVal) {
+    return This->lpVtbl->get_CountryCode(This,CountryCodeVal);
+}
+static FORCEINLINE HRESULT IAnalogRadioTuningSpace2_put_CountryCode(IAnalogRadioTuningSpace2* This,LONG NewCountryCodeVal) {
+    return This->lpVtbl->put_CountryCode(This,NewCountryCodeVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace2_get_CountryCode_Proxy(
+    IAnalogRadioTuningSpace2* This,
+    LONG *CountryCodeVal);
+void __RPC_STUB IAnalogRadioTuningSpace2_get_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace2_put_CountryCode_Proxy(
+    IAnalogRadioTuningSpace2* This,
+    LONG NewCountryCodeVal);
+void __RPC_STUB IAnalogRadioTuningSpace2_put_CountryCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAnalogRadioTuningSpace2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITuneRequest interface
+ */
+#ifndef __ITuneRequest_INTERFACE_DEFINED__
+#define __ITuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITuneRequest, 0x07ddc146, 0xfc3d, 0x11d2, 0x9d,0x8c, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("07ddc146-fc3d-11d2-9d8c-00c04f72d980")
+ITuneRequest : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_TuningSpace(
+        ITuningSpace **TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Components(
+        IComponents **Components) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        ITuneRequest **NewTuneRequest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Locator(
+        ILocator **Locator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Locator(
+        ILocator *Locator) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITuneRequest, 0x07ddc146, 0xfc3d, 0x11d2, 0x9d,0x8c, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct ITuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        ITuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        ITuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        ITuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        ITuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        ITuneRequest* This,
+        ILocator *Locator);
+
+    END_INTERFACE
+} ITuneRequestVtbl;
+interface ITuneRequest {
+    CONST_VTBL ITuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define ITuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define ITuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define ITuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define ITuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define ITuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define ITuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define ITuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define ITuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define ITuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITuneRequest_QueryInterface(ITuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITuneRequest_AddRef(ITuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITuneRequest_Release(ITuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ITuneRequest_GetTypeInfoCount(ITuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ITuneRequest_GetTypeInfo(ITuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ITuneRequest_GetIDsOfNames(ITuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ITuneRequest_Invoke(ITuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT ITuneRequest_get_TuningSpace(ITuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuneRequest_get_Components(ITuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT ITuneRequest_Clone(ITuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT ITuneRequest_get_Locator(ITuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT ITuneRequest_put_Locator(ITuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITuneRequest_get_TuningSpace_Proxy(
+    ITuneRequest* This,
+    ITuningSpace **TuningSpace);
+void __RPC_STUB ITuneRequest_get_TuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuneRequest_get_Components_Proxy(
+    ITuneRequest* This,
+    IComponents **Components);
+void __RPC_STUB ITuneRequest_get_Components_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuneRequest_Clone_Proxy(
+    ITuneRequest* This,
+    ITuneRequest **NewTuneRequest);
+void __RPC_STUB ITuneRequest_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuneRequest_get_Locator_Proxy(
+    ITuneRequest* This,
+    ILocator **Locator);
+void __RPC_STUB ITuneRequest_get_Locator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuneRequest_put_Locator_Proxy(
+    ITuneRequest* This,
+    ILocator *Locator);
+void __RPC_STUB ITuneRequest_put_Locator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IChannelIDTuneRequest interface
+ */
+#ifndef __IChannelIDTuneRequest_INTERFACE_DEFINED__
+#define __IChannelIDTuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IChannelIDTuneRequest, 0x156eff60, 0x86f4, 0x4e28, 0x89,0xfc, 0x10,0x97,0x99,0xfd,0x57,0xee);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("156eff60-86f4-4e28-89fc-109799fd57ee")
+IChannelIDTuneRequest : public ITuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ChannelID(
+        BSTR *ChannelID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ChannelID(
+        BSTR ChannelID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IChannelIDTuneRequest, 0x156eff60, 0x86f4, 0x4e28, 0x89,0xfc, 0x10,0x97,0x99,0xfd,0x57,0xee)
+#endif
+#else
+typedef struct IChannelIDTuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IChannelIDTuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IChannelIDTuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IChannelIDTuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IChannelIDTuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IChannelIDTuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IChannelIDTuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IChannelIDTuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IChannelIDTuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IChannelIDTuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IChannelIDTuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IChannelIDTuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IChannelIDTuneRequest* This,
+        ILocator *Locator);
+
+    /*** IChannelIDTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ChannelID)(
+        IChannelIDTuneRequest* This,
+        BSTR *ChannelID);
+
+    HRESULT (STDMETHODCALLTYPE *put_ChannelID)(
+        IChannelIDTuneRequest* This,
+        BSTR ChannelID);
+
+    END_INTERFACE
+} IChannelIDTuneRequestVtbl;
+interface IChannelIDTuneRequest {
+    CONST_VTBL IChannelIDTuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IChannelIDTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IChannelIDTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IChannelIDTuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IChannelIDTuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IChannelIDTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IChannelIDTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IChannelIDTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IChannelIDTuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IChannelIDTuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IChannelIDTuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IChannelIDTuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IChannelIDTuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IChannelIDTuneRequest methods ***/
+#define IChannelIDTuneRequest_get_ChannelID(This,ChannelID) (This)->lpVtbl->get_ChannelID(This,ChannelID)
+#define IChannelIDTuneRequest_put_ChannelID(This,ChannelID) (This)->lpVtbl->put_ChannelID(This,ChannelID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IChannelIDTuneRequest_QueryInterface(IChannelIDTuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IChannelIDTuneRequest_AddRef(IChannelIDTuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IChannelIDTuneRequest_Release(IChannelIDTuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IChannelIDTuneRequest_GetTypeInfoCount(IChannelIDTuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_GetTypeInfo(IChannelIDTuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_GetIDsOfNames(IChannelIDTuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_Invoke(IChannelIDTuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IChannelIDTuneRequest_get_TuningSpace(IChannelIDTuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_get_Components(IChannelIDTuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_Clone(IChannelIDTuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_get_Locator(IChannelIDTuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_put_Locator(IChannelIDTuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IChannelIDTuneRequest methods ***/
+static FORCEINLINE HRESULT IChannelIDTuneRequest_get_ChannelID(IChannelIDTuneRequest* This,BSTR *ChannelID) {
+    return This->lpVtbl->get_ChannelID(This,ChannelID);
+}
+static FORCEINLINE HRESULT IChannelIDTuneRequest_put_ChannelID(IChannelIDTuneRequest* This,BSTR ChannelID) {
+    return This->lpVtbl->put_ChannelID(This,ChannelID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IChannelIDTuneRequest_get_ChannelID_Proxy(
+    IChannelIDTuneRequest* This,
+    BSTR *ChannelID);
+void __RPC_STUB IChannelIDTuneRequest_get_ChannelID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IChannelIDTuneRequest_put_ChannelID_Proxy(
+    IChannelIDTuneRequest* This,
+    BSTR ChannelID);
+void __RPC_STUB IChannelIDTuneRequest_put_ChannelID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IChannelIDTuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IChannelTuneRequest interface
+ */
+#ifndef __IChannelTuneRequest_INTERFACE_DEFINED__
+#define __IChannelTuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IChannelTuneRequest, 0x0369b4e0, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0369b4e0-45b6-11d3-b650-00c04f79498e")
+IChannelTuneRequest : public ITuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Channel(
+        LONG *Channel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Channel(
+        LONG Channel) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IChannelTuneRequest, 0x0369b4e0, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IChannelTuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IChannelTuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IChannelTuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IChannelTuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IChannelTuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IChannelTuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IChannelTuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IChannelTuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IChannelTuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IChannelTuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IChannelTuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IChannelTuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IChannelTuneRequest* This,
+        ILocator *Locator);
+
+    /*** IChannelTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Channel)(
+        IChannelTuneRequest* This,
+        LONG *Channel);
+
+    HRESULT (STDMETHODCALLTYPE *put_Channel)(
+        IChannelTuneRequest* This,
+        LONG Channel);
+
+    END_INTERFACE
+} IChannelTuneRequestVtbl;
+interface IChannelTuneRequest {
+    CONST_VTBL IChannelTuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IChannelTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IChannelTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IChannelTuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IChannelTuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IChannelTuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IChannelTuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IChannelTuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IChannelTuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IChannelTuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IChannelTuneRequest methods ***/
+#define IChannelTuneRequest_get_Channel(This,Channel) (This)->lpVtbl->get_Channel(This,Channel)
+#define IChannelTuneRequest_put_Channel(This,Channel) (This)->lpVtbl->put_Channel(This,Channel)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IChannelTuneRequest_QueryInterface(IChannelTuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IChannelTuneRequest_AddRef(IChannelTuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IChannelTuneRequest_Release(IChannelTuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IChannelTuneRequest_GetTypeInfoCount(IChannelTuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_GetTypeInfo(IChannelTuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_GetIDsOfNames(IChannelTuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_Invoke(IChannelTuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IChannelTuneRequest_get_TuningSpace(IChannelTuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_get_Components(IChannelTuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_Clone(IChannelTuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_get_Locator(IChannelTuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_put_Locator(IChannelTuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IChannelTuneRequest methods ***/
+static FORCEINLINE HRESULT IChannelTuneRequest_get_Channel(IChannelTuneRequest* This,LONG *Channel) {
+    return This->lpVtbl->get_Channel(This,Channel);
+}
+static FORCEINLINE HRESULT IChannelTuneRequest_put_Channel(IChannelTuneRequest* This,LONG Channel) {
+    return This->lpVtbl->put_Channel(This,Channel);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IChannelTuneRequest_get_Channel_Proxy(
+    IChannelTuneRequest* This,
+    LONG *Channel);
+void __RPC_STUB IChannelTuneRequest_get_Channel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IChannelTuneRequest_put_Channel_Proxy(
+    IChannelTuneRequest* This,
+    LONG Channel);
+void __RPC_STUB IChannelTuneRequest_put_Channel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IChannelTuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IATSCChannelTuneRequest interface
+ */
+#ifndef __IATSCChannelTuneRequest_INTERFACE_DEFINED__
+#define __IATSCChannelTuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IATSCChannelTuneRequest, 0x0369b4e1, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0369b4e1-45b6-11d3-b650-00c04f79498e")
+IATSCChannelTuneRequest : public IChannelTuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MinorChannel(
+        LONG *MinorChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MinorChannel(
+        LONG MinorChannel) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IATSCChannelTuneRequest, 0x0369b4e1, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IATSCChannelTuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IATSCChannelTuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IATSCChannelTuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IATSCChannelTuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IATSCChannelTuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IATSCChannelTuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IATSCChannelTuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IATSCChannelTuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IATSCChannelTuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IATSCChannelTuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IATSCChannelTuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IATSCChannelTuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IATSCChannelTuneRequest* This,
+        ILocator *Locator);
+
+    /*** IChannelTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Channel)(
+        IATSCChannelTuneRequest* This,
+        LONG *Channel);
+
+    HRESULT (STDMETHODCALLTYPE *put_Channel)(
+        IATSCChannelTuneRequest* This,
+        LONG Channel);
+
+    /*** IATSCChannelTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinorChannel)(
+        IATSCChannelTuneRequest* This,
+        LONG *MinorChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinorChannel)(
+        IATSCChannelTuneRequest* This,
+        LONG MinorChannel);
+
+    END_INTERFACE
+} IATSCChannelTuneRequestVtbl;
+interface IATSCChannelTuneRequest {
+    CONST_VTBL IATSCChannelTuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IATSCChannelTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IATSCChannelTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IATSCChannelTuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IATSCChannelTuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IATSCChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IATSCChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IATSCChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IATSCChannelTuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IATSCChannelTuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IATSCChannelTuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IATSCChannelTuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IATSCChannelTuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IChannelTuneRequest methods ***/
+#define IATSCChannelTuneRequest_get_Channel(This,Channel) (This)->lpVtbl->get_Channel(This,Channel)
+#define IATSCChannelTuneRequest_put_Channel(This,Channel) (This)->lpVtbl->put_Channel(This,Channel)
+/*** IATSCChannelTuneRequest methods ***/
+#define IATSCChannelTuneRequest_get_MinorChannel(This,MinorChannel) (This)->lpVtbl->get_MinorChannel(This,MinorChannel)
+#define IATSCChannelTuneRequest_put_MinorChannel(This,MinorChannel) (This)->lpVtbl->put_MinorChannel(This,MinorChannel)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_QueryInterface(IATSCChannelTuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IATSCChannelTuneRequest_AddRef(IATSCChannelTuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IATSCChannelTuneRequest_Release(IATSCChannelTuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_GetTypeInfoCount(IATSCChannelTuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_GetTypeInfo(IATSCChannelTuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_GetIDsOfNames(IATSCChannelTuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_Invoke(IATSCChannelTuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_get_TuningSpace(IATSCChannelTuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_get_Components(IATSCChannelTuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_Clone(IATSCChannelTuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_get_Locator(IATSCChannelTuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_put_Locator(IATSCChannelTuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IChannelTuneRequest methods ***/
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_get_Channel(IATSCChannelTuneRequest* This,LONG *Channel) {
+    return This->lpVtbl->get_Channel(This,Channel);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_put_Channel(IATSCChannelTuneRequest* This,LONG Channel) {
+    return This->lpVtbl->put_Channel(This,Channel);
+}
+/*** IATSCChannelTuneRequest methods ***/
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_get_MinorChannel(IATSCChannelTuneRequest* This,LONG *MinorChannel) {
+    return This->lpVtbl->get_MinorChannel(This,MinorChannel);
+}
+static FORCEINLINE HRESULT IATSCChannelTuneRequest_put_MinorChannel(IATSCChannelTuneRequest* This,LONG MinorChannel) {
+    return This->lpVtbl->put_MinorChannel(This,MinorChannel);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_get_MinorChannel_Proxy(
+    IATSCChannelTuneRequest* This,
+    LONG *MinorChannel);
+void __RPC_STUB IATSCChannelTuneRequest_get_MinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_put_MinorChannel_Proxy(
+    IATSCChannelTuneRequest* This,
+    LONG MinorChannel);
+void __RPC_STUB IATSCChannelTuneRequest_put_MinorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IATSCChannelTuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDigitalCableTuneRequest interface
+ */
+#ifndef __IDigitalCableTuneRequest_INTERFACE_DEFINED__
+#define __IDigitalCableTuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDigitalCableTuneRequest, 0xbad7753b, 0x6b37, 0x4810, 0xae,0x57, 0x3c,0xe0,0xc4,0xa9,0xe6,0xcb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bad7753b-6b37-4810-ae57-3ce0c4a9e6cb")
+IDigitalCableTuneRequest : public IATSCChannelTuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_MajorChannel(
+        LONG *pMajorChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MajorChannel(
+        LONG MajorChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SourceID(
+        LONG *pSourceID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SourceID(
+        LONG SourceID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDigitalCableTuneRequest, 0xbad7753b, 0x6b37, 0x4810, 0xae,0x57, 0x3c,0xe0,0xc4,0xa9,0xe6,0xcb)
+#endif
+#else
+typedef struct IDigitalCableTuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDigitalCableTuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDigitalCableTuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDigitalCableTuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDigitalCableTuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDigitalCableTuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDigitalCableTuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDigitalCableTuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IDigitalCableTuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IDigitalCableTuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDigitalCableTuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IDigitalCableTuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IDigitalCableTuneRequest* This,
+        ILocator *Locator);
+
+    /*** IChannelTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Channel)(
+        IDigitalCableTuneRequest* This,
+        LONG *Channel);
+
+    HRESULT (STDMETHODCALLTYPE *put_Channel)(
+        IDigitalCableTuneRequest* This,
+        LONG Channel);
+
+    /*** IATSCChannelTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MinorChannel)(
+        IDigitalCableTuneRequest* This,
+        LONG *MinorChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_MinorChannel)(
+        IDigitalCableTuneRequest* This,
+        LONG MinorChannel);
+
+    /*** IDigitalCableTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_MajorChannel)(
+        IDigitalCableTuneRequest* This,
+        LONG *pMajorChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_MajorChannel)(
+        IDigitalCableTuneRequest* This,
+        LONG MajorChannel);
+
+    HRESULT (STDMETHODCALLTYPE *get_SourceID)(
+        IDigitalCableTuneRequest* This,
+        LONG *pSourceID);
+
+    HRESULT (STDMETHODCALLTYPE *put_SourceID)(
+        IDigitalCableTuneRequest* This,
+        LONG SourceID);
+
+    END_INTERFACE
+} IDigitalCableTuneRequestVtbl;
+interface IDigitalCableTuneRequest {
+    CONST_VTBL IDigitalCableTuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDigitalCableTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDigitalCableTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDigitalCableTuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDigitalCableTuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDigitalCableTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDigitalCableTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDigitalCableTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IDigitalCableTuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IDigitalCableTuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IDigitalCableTuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IDigitalCableTuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IDigitalCableTuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IChannelTuneRequest methods ***/
+#define IDigitalCableTuneRequest_get_Channel(This,Channel) (This)->lpVtbl->get_Channel(This,Channel)
+#define IDigitalCableTuneRequest_put_Channel(This,Channel) (This)->lpVtbl->put_Channel(This,Channel)
+/*** IATSCChannelTuneRequest methods ***/
+#define IDigitalCableTuneRequest_get_MinorChannel(This,MinorChannel) (This)->lpVtbl->get_MinorChannel(This,MinorChannel)
+#define IDigitalCableTuneRequest_put_MinorChannel(This,MinorChannel) (This)->lpVtbl->put_MinorChannel(This,MinorChannel)
+/*** IDigitalCableTuneRequest methods ***/
+#define IDigitalCableTuneRequest_get_MajorChannel(This,pMajorChannel) (This)->lpVtbl->get_MajorChannel(This,pMajorChannel)
+#define IDigitalCableTuneRequest_put_MajorChannel(This,MajorChannel) (This)->lpVtbl->put_MajorChannel(This,MajorChannel)
+#define IDigitalCableTuneRequest_get_SourceID(This,pSourceID) (This)->lpVtbl->get_SourceID(This,pSourceID)
+#define IDigitalCableTuneRequest_put_SourceID(This,SourceID) (This)->lpVtbl->put_SourceID(This,SourceID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_QueryInterface(IDigitalCableTuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDigitalCableTuneRequest_AddRef(IDigitalCableTuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDigitalCableTuneRequest_Release(IDigitalCableTuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_GetTypeInfoCount(IDigitalCableTuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_GetTypeInfo(IDigitalCableTuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_GetIDsOfNames(IDigitalCableTuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_Invoke(IDigitalCableTuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_TuningSpace(IDigitalCableTuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_Components(IDigitalCableTuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_Clone(IDigitalCableTuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_Locator(IDigitalCableTuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_put_Locator(IDigitalCableTuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IChannelTuneRequest methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_Channel(IDigitalCableTuneRequest* This,LONG *Channel) {
+    return This->lpVtbl->get_Channel(This,Channel);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_put_Channel(IDigitalCableTuneRequest* This,LONG Channel) {
+    return This->lpVtbl->put_Channel(This,Channel);
+}
+/*** IATSCChannelTuneRequest methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_MinorChannel(IDigitalCableTuneRequest* This,LONG *MinorChannel) {
+    return This->lpVtbl->get_MinorChannel(This,MinorChannel);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_put_MinorChannel(IDigitalCableTuneRequest* This,LONG MinorChannel) {
+    return This->lpVtbl->put_MinorChannel(This,MinorChannel);
+}
+/*** IDigitalCableTuneRequest methods ***/
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_MajorChannel(IDigitalCableTuneRequest* This,LONG *pMajorChannel) {
+    return This->lpVtbl->get_MajorChannel(This,pMajorChannel);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_put_MajorChannel(IDigitalCableTuneRequest* This,LONG MajorChannel) {
+    return This->lpVtbl->put_MajorChannel(This,MajorChannel);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_get_SourceID(IDigitalCableTuneRequest* This,LONG *pSourceID) {
+    return This->lpVtbl->get_SourceID(This,pSourceID);
+}
+static FORCEINLINE HRESULT IDigitalCableTuneRequest_put_SourceID(IDigitalCableTuneRequest* This,LONG SourceID) {
+    return This->lpVtbl->put_SourceID(This,SourceID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_get_MajorChannel_Proxy(
+    IDigitalCableTuneRequest* This,
+    LONG *pMajorChannel);
+void __RPC_STUB IDigitalCableTuneRequest_get_MajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_put_MajorChannel_Proxy(
+    IDigitalCableTuneRequest* This,
+    LONG MajorChannel);
+void __RPC_STUB IDigitalCableTuneRequest_put_MajorChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_get_SourceID_Proxy(
+    IDigitalCableTuneRequest* This,
+    LONG *pSourceID);
+void __RPC_STUB IDigitalCableTuneRequest_get_SourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_put_SourceID_Proxy(
+    IDigitalCableTuneRequest* This,
+    LONG SourceID);
+void __RPC_STUB IDigitalCableTuneRequest_put_SourceID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDigitalCableTuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBTuneRequest interface
+ */
+#ifndef __IDVBTuneRequest_INTERFACE_DEFINED__
+#define __IDVBTuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBTuneRequest, 0x0d6f567e, 0xa636, 0x42bb, 0x83,0xba, 0xce,0x4c,0x17,0x04,0xaf,0xa2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0d6f567e-a636-42bb-83ba-ce4c1704afa2")
+IDVBTuneRequest : public ITuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ONID(
+        LONG *ONID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ONID(
+        LONG ONID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TSID(
+        LONG *TSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TSID(
+        LONG TSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SID(
+        LONG *SID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SID(
+        LONG SID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBTuneRequest, 0x0d6f567e, 0xa636, 0x42bb, 0x83,0xba, 0xce,0x4c,0x17,0x04,0xaf,0xa2)
+#endif
+#else
+typedef struct IDVBTuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBTuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBTuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBTuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBTuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBTuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBTuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBTuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IDVBTuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IDVBTuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBTuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IDVBTuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IDVBTuneRequest* This,
+        ILocator *Locator);
+
+    /*** IDVBTuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ONID)(
+        IDVBTuneRequest* This,
+        LONG *ONID);
+
+    HRESULT (STDMETHODCALLTYPE *put_ONID)(
+        IDVBTuneRequest* This,
+        LONG ONID);
+
+    HRESULT (STDMETHODCALLTYPE *get_TSID)(
+        IDVBTuneRequest* This,
+        LONG *TSID);
+
+    HRESULT (STDMETHODCALLTYPE *put_TSID)(
+        IDVBTuneRequest* This,
+        LONG TSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_SID)(
+        IDVBTuneRequest* This,
+        LONG *SID);
+
+    HRESULT (STDMETHODCALLTYPE *put_SID)(
+        IDVBTuneRequest* This,
+        LONG SID);
+
+    END_INTERFACE
+} IDVBTuneRequestVtbl;
+interface IDVBTuneRequest {
+    CONST_VTBL IDVBTuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBTuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBTuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBTuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBTuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IDVBTuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IDVBTuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IDVBTuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IDVBTuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IDVBTuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IDVBTuneRequest methods ***/
+#define IDVBTuneRequest_get_ONID(This,ONID) (This)->lpVtbl->get_ONID(This,ONID)
+#define IDVBTuneRequest_put_ONID(This,ONID) (This)->lpVtbl->put_ONID(This,ONID)
+#define IDVBTuneRequest_get_TSID(This,TSID) (This)->lpVtbl->get_TSID(This,TSID)
+#define IDVBTuneRequest_put_TSID(This,TSID) (This)->lpVtbl->put_TSID(This,TSID)
+#define IDVBTuneRequest_get_SID(This,SID) (This)->lpVtbl->get_SID(This,SID)
+#define IDVBTuneRequest_put_SID(This,SID) (This)->lpVtbl->put_SID(This,SID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBTuneRequest_QueryInterface(IDVBTuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBTuneRequest_AddRef(IDVBTuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBTuneRequest_Release(IDVBTuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBTuneRequest_GetTypeInfoCount(IDVBTuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_GetTypeInfo(IDVBTuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_GetIDsOfNames(IDVBTuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_Invoke(IDVBTuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IDVBTuneRequest_get_TuningSpace(IDVBTuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_get_Components(IDVBTuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_Clone(IDVBTuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_get_Locator(IDVBTuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_put_Locator(IDVBTuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IDVBTuneRequest methods ***/
+static FORCEINLINE HRESULT IDVBTuneRequest_get_ONID(IDVBTuneRequest* This,LONG *ONID) {
+    return This->lpVtbl->get_ONID(This,ONID);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_put_ONID(IDVBTuneRequest* This,LONG ONID) {
+    return This->lpVtbl->put_ONID(This,ONID);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_get_TSID(IDVBTuneRequest* This,LONG *TSID) {
+    return This->lpVtbl->get_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_put_TSID(IDVBTuneRequest* This,LONG TSID) {
+    return This->lpVtbl->put_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_get_SID(IDVBTuneRequest* This,LONG *SID) {
+    return This->lpVtbl->get_SID(This,SID);
+}
+static FORCEINLINE HRESULT IDVBTuneRequest_put_SID(IDVBTuneRequest* This,LONG SID) {
+    return This->lpVtbl->put_SID(This,SID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_ONID_Proxy(
+    IDVBTuneRequest* This,
+    LONG *ONID);
+void __RPC_STUB IDVBTuneRequest_get_ONID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_ONID_Proxy(
+    IDVBTuneRequest* This,
+    LONG ONID);
+void __RPC_STUB IDVBTuneRequest_put_ONID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_TSID_Proxy(
+    IDVBTuneRequest* This,
+    LONG *TSID);
+void __RPC_STUB IDVBTuneRequest_get_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_TSID_Proxy(
+    IDVBTuneRequest* This,
+    LONG TSID);
+void __RPC_STUB IDVBTuneRequest_put_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_SID_Proxy(
+    IDVBTuneRequest* This,
+    LONG *SID);
+void __RPC_STUB IDVBTuneRequest_get_SID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_SID_Proxy(
+    IDVBTuneRequest* This,
+    LONG SID);
+void __RPC_STUB IDVBTuneRequest_put_SID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBTuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2TuneRequest interface
+ */
+#ifndef __IMPEG2TuneRequest_INTERFACE_DEFINED__
+#define __IMPEG2TuneRequest_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2TuneRequest, 0xeb7d987f, 0x8a01, 0x42ad, 0xb8,0xae, 0x57,0x4d,0xee,0xe4,0x4d,0x1a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("eb7d987f-8a01-42ad-b8ae-574deee44d1a")
+IMPEG2TuneRequest : public ITuneRequest
+{
+    virtual HRESULT STDMETHODCALLTYPE get_TSID(
+        LONG *TSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TSID(
+        LONG TSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ProgNo(
+        LONG *ProgNo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ProgNo(
+        LONG ProgNo) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2TuneRequest, 0xeb7d987f, 0x8a01, 0x42ad, 0xb8,0xae, 0x57,0x4d,0xee,0xe4,0x4d,0x1a)
+#endif
+#else
+typedef struct IMPEG2TuneRequestVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2TuneRequest* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2TuneRequest* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2TuneRequest* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IMPEG2TuneRequest* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IMPEG2TuneRequest* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IMPEG2TuneRequest* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IMPEG2TuneRequest* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ITuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IMPEG2TuneRequest* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *get_Components)(
+        IMPEG2TuneRequest* This,
+        IComponents **Components);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IMPEG2TuneRequest* This,
+        ITuneRequest **NewTuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_Locator)(
+        IMPEG2TuneRequest* This,
+        ILocator **Locator);
+
+    HRESULT (STDMETHODCALLTYPE *put_Locator)(
+        IMPEG2TuneRequest* This,
+        ILocator *Locator);
+
+    /*** IMPEG2TuneRequest methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TSID)(
+        IMPEG2TuneRequest* This,
+        LONG *TSID);
+
+    HRESULT (STDMETHODCALLTYPE *put_TSID)(
+        IMPEG2TuneRequest* This,
+        LONG TSID);
+
+    HRESULT (STDMETHODCALLTYPE *get_ProgNo)(
+        IMPEG2TuneRequest* This,
+        LONG *ProgNo);
+
+    HRESULT (STDMETHODCALLTYPE *put_ProgNo)(
+        IMPEG2TuneRequest* This,
+        LONG ProgNo);
+
+    END_INTERFACE
+} IMPEG2TuneRequestVtbl;
+interface IMPEG2TuneRequest {
+    CONST_VTBL IMPEG2TuneRequestVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2TuneRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2TuneRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2TuneRequest_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IMPEG2TuneRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IMPEG2TuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IMPEG2TuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IMPEG2TuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ITuneRequest methods ***/
+#define IMPEG2TuneRequest_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IMPEG2TuneRequest_get_Components(This,Components) (This)->lpVtbl->get_Components(This,Components)
+#define IMPEG2TuneRequest_Clone(This,NewTuneRequest) (This)->lpVtbl->Clone(This,NewTuneRequest)
+#define IMPEG2TuneRequest_get_Locator(This,Locator) (This)->lpVtbl->get_Locator(This,Locator)
+#define IMPEG2TuneRequest_put_Locator(This,Locator) (This)->lpVtbl->put_Locator(This,Locator)
+/*** IMPEG2TuneRequest methods ***/
+#define IMPEG2TuneRequest_get_TSID(This,TSID) (This)->lpVtbl->get_TSID(This,TSID)
+#define IMPEG2TuneRequest_put_TSID(This,TSID) (This)->lpVtbl->put_TSID(This,TSID)
+#define IMPEG2TuneRequest_get_ProgNo(This,ProgNo) (This)->lpVtbl->get_ProgNo(This,ProgNo)
+#define IMPEG2TuneRequest_put_ProgNo(This,ProgNo) (This)->lpVtbl->put_ProgNo(This,ProgNo)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequest_QueryInterface(IMPEG2TuneRequest* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequest_AddRef(IMPEG2TuneRequest* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequest_Release(IMPEG2TuneRequest* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequest_GetTypeInfoCount(IMPEG2TuneRequest* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_GetTypeInfo(IMPEG2TuneRequest* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_GetIDsOfNames(IMPEG2TuneRequest* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_Invoke(IMPEG2TuneRequest* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ITuneRequest methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequest_get_TuningSpace(IMPEG2TuneRequest* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_get_Components(IMPEG2TuneRequest* This,IComponents **Components) {
+    return This->lpVtbl->get_Components(This,Components);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_Clone(IMPEG2TuneRequest* This,ITuneRequest **NewTuneRequest) {
+    return This->lpVtbl->Clone(This,NewTuneRequest);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_get_Locator(IMPEG2TuneRequest* This,ILocator **Locator) {
+    return This->lpVtbl->get_Locator(This,Locator);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_put_Locator(IMPEG2TuneRequest* This,ILocator *Locator) {
+    return This->lpVtbl->put_Locator(This,Locator);
+}
+/*** IMPEG2TuneRequest methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequest_get_TSID(IMPEG2TuneRequest* This,LONG *TSID) {
+    return This->lpVtbl->get_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_put_TSID(IMPEG2TuneRequest* This,LONG TSID) {
+    return This->lpVtbl->put_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_get_ProgNo(IMPEG2TuneRequest* This,LONG *ProgNo) {
+    return This->lpVtbl->get_ProgNo(This,ProgNo);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequest_put_ProgNo(IMPEG2TuneRequest* This,LONG ProgNo) {
+    return This->lpVtbl->put_ProgNo(This,ProgNo);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_TSID_Proxy(
+    IMPEG2TuneRequest* This,
+    LONG *TSID);
+void __RPC_STUB IMPEG2TuneRequest_get_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_TSID_Proxy(
+    IMPEG2TuneRequest* This,
+    LONG TSID);
+void __RPC_STUB IMPEG2TuneRequest_put_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_ProgNo_Proxy(
+    IMPEG2TuneRequest* This,
+    LONG *ProgNo);
+void __RPC_STUB IMPEG2TuneRequest_get_ProgNo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_ProgNo_Proxy(
+    IMPEG2TuneRequest* This,
+    LONG ProgNo);
+void __RPC_STUB IMPEG2TuneRequest_put_ProgNo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMPEG2TuneRequest_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2TuneRequestFactory interface
+ */
+#ifndef __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__
+#define __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2TuneRequestFactory, 0x14e11abd, 0xee37, 0x4893, 0x9e,0xa1, 0x69,0x64,0xde,0x93,0x3e,0x39);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("14e11abd-ee37-4893-9ea1-6964de933e39")
+IMPEG2TuneRequestFactory : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateTuneRequest(
+        ITuningSpace *TuningSpace,
+        IMPEG2TuneRequest **TuneRequest) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2TuneRequestFactory, 0x14e11abd, 0xee37, 0x4893, 0x9e,0xa1, 0x69,0x64,0xde,0x93,0x3e,0x39)
+#endif
+#else
+typedef struct IMPEG2TuneRequestFactoryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2TuneRequestFactory* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2TuneRequestFactory* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2TuneRequestFactory* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IMPEG2TuneRequestFactory* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IMPEG2TuneRequestFactory* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IMPEG2TuneRequestFactory* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IMPEG2TuneRequestFactory* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IMPEG2TuneRequestFactory methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
+        IMPEG2TuneRequestFactory* This,
+        ITuningSpace *TuningSpace,
+        IMPEG2TuneRequest **TuneRequest);
+
+    END_INTERFACE
+} IMPEG2TuneRequestFactoryVtbl;
+interface IMPEG2TuneRequestFactory {
+    CONST_VTBL IMPEG2TuneRequestFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2TuneRequestFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2TuneRequestFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2TuneRequestFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IMPEG2TuneRequestFactory_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IMPEG2TuneRequestFactory_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IMPEG2TuneRequestFactory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IMPEG2TuneRequestFactory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IMPEG2TuneRequestFactory methods ***/
+#define IMPEG2TuneRequestFactory_CreateTuneRequest(This,TuningSpace,TuneRequest) (This)->lpVtbl->CreateTuneRequest(This,TuningSpace,TuneRequest)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_QueryInterface(IMPEG2TuneRequestFactory* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequestFactory_AddRef(IMPEG2TuneRequestFactory* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequestFactory_Release(IMPEG2TuneRequestFactory* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_GetTypeInfoCount(IMPEG2TuneRequestFactory* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_GetTypeInfo(IMPEG2TuneRequestFactory* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_GetIDsOfNames(IMPEG2TuneRequestFactory* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_Invoke(IMPEG2TuneRequestFactory* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IMPEG2TuneRequestFactory methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequestFactory_CreateTuneRequest(IMPEG2TuneRequestFactory* This,ITuningSpace *TuningSpace,IMPEG2TuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequest(This,TuningSpace,TuneRequest);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMPEG2TuneRequestFactory_CreateTuneRequest_Proxy(
+    IMPEG2TuneRequestFactory* This,
+    ITuningSpace *TuningSpace,
+    IMPEG2TuneRequest **TuneRequest);
+void __RPC_STUB IMPEG2TuneRequestFactory_CreateTuneRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2TuneRequestSupport interface
+ */
+#ifndef __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__
+#define __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2TuneRequestSupport, 0x1b9d5fc3, 0x5bbc, 0x4b6c, 0xbb,0x18, 0xb9,0xd1,0x0e,0x3e,0xee,0xbf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1b9d5fc3-5bbc-4b6c-bb18-b9d10e3eeebf")
+IMPEG2TuneRequestSupport : public IUnknown
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2TuneRequestSupport, 0x1b9d5fc3, 0x5bbc, 0x4b6c, 0xbb,0x18, 0xb9,0xd1,0x0e,0x3e,0xee,0xbf)
+#endif
+#else
+typedef struct IMPEG2TuneRequestSupportVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2TuneRequestSupport* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2TuneRequestSupport* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2TuneRequestSupport* This);
+
+    END_INTERFACE
+} IMPEG2TuneRequestSupportVtbl;
+interface IMPEG2TuneRequestSupport {
+    CONST_VTBL IMPEG2TuneRequestSupportVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2TuneRequestSupport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2TuneRequestSupport_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2TuneRequestSupport_Release(This) (This)->lpVtbl->Release(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2TuneRequestSupport_QueryInterface(IMPEG2TuneRequestSupport* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequestSupport_AddRef(IMPEG2TuneRequestSupport* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2TuneRequestSupport_Release(IMPEG2TuneRequestSupport* This) {
+    return This->lpVtbl->Release(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITunerCap interface
+ */
+#ifndef __ITunerCap_INTERFACE_DEFINED__
+#define __ITunerCap_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITunerCap, 0xe60dfa45, 0x8d56, 0x4e65, 0xa8,0xab, 0xd6,0xbe,0x94,0x12,0xc2,0x49);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e60dfa45-8d56-4e65-a8ab-d6be9412c249")
+ITunerCap : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SupportedNetworkTypes(
+        ULONG ulcNetworkTypesMax,
+        ULONG *pulcNetworkTypes,
+        GUID *pguidNetworkTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SupportedVideoFormats(
+        ULONG *pulAMTunerModeType,
+        ULONG *pulAnalogVideoStandard) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AuxInputCount(
+        ULONG *pulCompositeCount,
+        ULONG *pulSvideoCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITunerCap, 0xe60dfa45, 0x8d56, 0x4e65, 0xa8,0xab, 0xd6,0xbe,0x94,0x12,0xc2,0x49)
+#endif
+#else
+typedef struct ITunerCapVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITunerCap* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITunerCap* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITunerCap* This);
+
+    /*** ITunerCap methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SupportedNetworkTypes)(
+        ITunerCap* This,
+        ULONG ulcNetworkTypesMax,
+        ULONG *pulcNetworkTypes,
+        GUID *pguidNetworkTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_SupportedVideoFormats)(
+        ITunerCap* This,
+        ULONG *pulAMTunerModeType,
+        ULONG *pulAnalogVideoStandard);
+
+    HRESULT (STDMETHODCALLTYPE *get_AuxInputCount)(
+        ITunerCap* This,
+        ULONG *pulCompositeCount,
+        ULONG *pulSvideoCount);
+
+    END_INTERFACE
+} ITunerCapVtbl;
+interface ITunerCap {
+    CONST_VTBL ITunerCapVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITunerCap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITunerCap_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITunerCap_Release(This) (This)->lpVtbl->Release(This)
+/*** ITunerCap methods ***/
+#define ITunerCap_get_SupportedNetworkTypes(This,ulcNetworkTypesMax,pulcNetworkTypes,pguidNetworkTypes) (This)->lpVtbl->get_SupportedNetworkTypes(This,ulcNetworkTypesMax,pulcNetworkTypes,pguidNetworkTypes)
+#define ITunerCap_get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard) (This)->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard)
+#define ITunerCap_get_AuxInputCount(This,pulCompositeCount,pulSvideoCount) (This)->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITunerCap_QueryInterface(ITunerCap* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITunerCap_AddRef(ITunerCap* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITunerCap_Release(ITunerCap* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITunerCap methods ***/
+static FORCEINLINE HRESULT ITunerCap_get_SupportedNetworkTypes(ITunerCap* This,ULONG ulcNetworkTypesMax,ULONG *pulcNetworkTypes,GUID *pguidNetworkTypes) {
+    return This->lpVtbl->get_SupportedNetworkTypes(This,ulcNetworkTypesMax,pulcNetworkTypes,pguidNetworkTypes);
+}
+static FORCEINLINE HRESULT ITunerCap_get_SupportedVideoFormats(ITunerCap* This,ULONG *pulAMTunerModeType,ULONG *pulAnalogVideoStandard) {
+    return This->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard);
+}
+static FORCEINLINE HRESULT ITunerCap_get_AuxInputCount(ITunerCap* This,ULONG *pulCompositeCount,ULONG *pulSvideoCount) {
+    return This->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITunerCap_get_SupportedNetworkTypes_Proxy(
+    ITunerCap* This,
+    ULONG ulcNetworkTypesMax,
+    ULONG *pulcNetworkTypes,
+    GUID *pguidNetworkTypes);
+void __RPC_STUB ITunerCap_get_SupportedNetworkTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITunerCap_get_SupportedVideoFormats_Proxy(
+    ITunerCap* This,
+    ULONG *pulAMTunerModeType,
+    ULONG *pulAnalogVideoStandard);
+void __RPC_STUB ITunerCap_get_SupportedVideoFormats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITunerCap_get_AuxInputCount_Proxy(
+    ITunerCap* This,
+    ULONG *pulCompositeCount,
+    ULONG *pulSvideoCount);
+void __RPC_STUB ITunerCap_get_AuxInputCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITunerCap_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITunerCapEx interface
+ */
+#ifndef __ITunerCapEx_INTERFACE_DEFINED__
+#define __ITunerCapEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITunerCapEx, 0xed3e0c66, 0x18c8, 0x4ea6, 0x93,0x00, 0xf6,0x84,0x1f,0xdd,0x35,0xdc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ed3e0c66-18c8-4ea6-9300-f6841fdd35dc")
+ITunerCapEx : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Has608_708Caption(
+        VARIANT_BOOL *pbHasCaption) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITunerCapEx, 0xed3e0c66, 0x18c8, 0x4ea6, 0x93,0x00, 0xf6,0x84,0x1f,0xdd,0x35,0xdc)
+#endif
+#else
+typedef struct ITunerCapExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITunerCapEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITunerCapEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITunerCapEx* This);
+
+    /*** ITunerCapEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Has608_708Caption)(
+        ITunerCapEx* This,
+        VARIANT_BOOL *pbHasCaption);
+
+    END_INTERFACE
+} ITunerCapExVtbl;
+interface ITunerCapEx {
+    CONST_VTBL ITunerCapExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITunerCapEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITunerCapEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITunerCapEx_Release(This) (This)->lpVtbl->Release(This)
+/*** ITunerCapEx methods ***/
+#define ITunerCapEx_get_Has608_708Caption(This,pbHasCaption) (This)->lpVtbl->get_Has608_708Caption(This,pbHasCaption)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITunerCapEx_QueryInterface(ITunerCapEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITunerCapEx_AddRef(ITunerCapEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITunerCapEx_Release(ITunerCapEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITunerCapEx methods ***/
+static FORCEINLINE HRESULT ITunerCapEx_get_Has608_708Caption(ITunerCapEx* This,VARIANT_BOOL *pbHasCaption) {
+    return This->lpVtbl->get_Has608_708Caption(This,pbHasCaption);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITunerCapEx_get_Has608_708Caption_Proxy(
+    ITunerCapEx* This,
+    VARIANT_BOOL *pbHasCaption);
+void __RPC_STUB ITunerCapEx_get_Has608_708Caption_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITunerCapEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITuner interface
+ */
+#ifndef __ITuner_INTERFACE_DEFINED__
+#define __ITuner_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITuner, 0x28c52640, 0x018a, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("28c52640-018a-11d3-9d8e-00c04f72d980")
+ITuner : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_TuningSpace(
+        ITuningSpace **TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TuningSpace(
+        ITuningSpace *TuningSpace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumTuningSpaces(
+        IEnumTuningSpaces **ppEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TuneRequest(
+        ITuneRequest **TuneRequest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TuneRequest(
+        ITuneRequest *TuneRequest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Validate(
+        ITuneRequest *TuneRequest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PreferredComponentTypes(
+        IComponentTypes **ComponentTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PreferredComponentTypes(
+        IComponentTypes *ComponentTypes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalStrength(
+        LONG *Strength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TriggerSignalEvents(
+        LONG Interval) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ITuner, 0x28c52640, 0x018a, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct ITunerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITuner* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITuner* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITuner* This);
+
+    /*** ITuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        ITuner* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
+        ITuner* This,
+        ITuningSpace *TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
+        ITuner* This,
+        IEnumTuningSpaces **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
+        ITuner* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
+        ITuner* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *Validate)(
+        ITuner* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
+        ITuner* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
+        ITuner* This,
+        IComponentTypes *ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
+        ITuner* This,
+        LONG *Strength);
+
+    HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
+        ITuner* This,
+        LONG Interval);
+
+    END_INTERFACE
+} ITunerVtbl;
+interface ITuner {
+    CONST_VTBL ITunerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ITuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITuner_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITuner_Release(This) (This)->lpVtbl->Release(This)
+/*** ITuner methods ***/
+#define ITuner_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define ITuner_put_TuningSpace(This,TuningSpace) (This)->lpVtbl->put_TuningSpace(This,TuningSpace)
+#define ITuner_EnumTuningSpaces(This,ppEnum) (This)->lpVtbl->EnumTuningSpaces(This,ppEnum)
+#define ITuner_get_TuneRequest(This,TuneRequest) (This)->lpVtbl->get_TuneRequest(This,TuneRequest)
+#define ITuner_put_TuneRequest(This,TuneRequest) (This)->lpVtbl->put_TuneRequest(This,TuneRequest)
+#define ITuner_Validate(This,TuneRequest) (This)->lpVtbl->Validate(This,TuneRequest)
+#define ITuner_get_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes)
+#define ITuner_put_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes)
+#define ITuner_get_SignalStrength(This,Strength) (This)->lpVtbl->get_SignalStrength(This,Strength)
+#define ITuner_TriggerSignalEvents(This,Interval) (This)->lpVtbl->TriggerSignalEvents(This,Interval)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ITuner_QueryInterface(ITuner* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ITuner_AddRef(ITuner* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ITuner_Release(ITuner* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITuner methods ***/
+static FORCEINLINE HRESULT ITuner_get_TuningSpace(ITuner* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuner_put_TuningSpace(ITuner* This,ITuningSpace *TuningSpace) {
+    return This->lpVtbl->put_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT ITuner_EnumTuningSpaces(ITuner* This,IEnumTuningSpaces **ppEnum) {
+    return This->lpVtbl->EnumTuningSpaces(This,ppEnum);
+}
+static FORCEINLINE HRESULT ITuner_get_TuneRequest(ITuner* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->get_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT ITuner_put_TuneRequest(ITuner* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->put_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT ITuner_Validate(ITuner* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->Validate(This,TuneRequest);
+}
+static FORCEINLINE HRESULT ITuner_get_PreferredComponentTypes(ITuner* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT ITuner_put_PreferredComponentTypes(ITuner* This,IComponentTypes *ComponentTypes) {
+    return This->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT ITuner_get_SignalStrength(ITuner* This,LONG *Strength) {
+    return This->lpVtbl->get_SignalStrength(This,Strength);
+}
+static FORCEINLINE HRESULT ITuner_TriggerSignalEvents(ITuner* This,LONG Interval) {
+    return This->lpVtbl->TriggerSignalEvents(This,Interval);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITuner_get_TuningSpace_Proxy(
+    ITuner* This,
+    ITuningSpace **TuningSpace);
+void __RPC_STUB ITuner_get_TuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_put_TuningSpace_Proxy(
+    ITuner* This,
+    ITuningSpace *TuningSpace);
+void __RPC_STUB ITuner_put_TuningSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_EnumTuningSpaces_Proxy(
+    ITuner* This,
+    IEnumTuningSpaces **ppEnum);
+void __RPC_STUB ITuner_EnumTuningSpaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_get_TuneRequest_Proxy(
+    ITuner* This,
+    ITuneRequest **TuneRequest);
+void __RPC_STUB ITuner_get_TuneRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_put_TuneRequest_Proxy(
+    ITuner* This,
+    ITuneRequest *TuneRequest);
+void __RPC_STUB ITuner_put_TuneRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_Validate_Proxy(
+    ITuner* This,
+    ITuneRequest *TuneRequest);
+void __RPC_STUB ITuner_Validate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_get_PreferredComponentTypes_Proxy(
+    ITuner* This,
+    IComponentTypes **ComponentTypes);
+void __RPC_STUB ITuner_get_PreferredComponentTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_put_PreferredComponentTypes_Proxy(
+    ITuner* This,
+    IComponentTypes *ComponentTypes);
+void __RPC_STUB ITuner_put_PreferredComponentTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_get_SignalStrength_Proxy(
+    ITuner* This,
+    LONG *Strength);
+void __RPC_STUB ITuner_get_SignalStrength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITuner_TriggerSignalEvents_Proxy(
+    ITuner* This,
+    LONG Interval);
+void __RPC_STUB ITuner_TriggerSignalEvents_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITuner_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IScanningTuner interface
+ */
+#ifndef __IScanningTuner_INTERFACE_DEFINED__
+#define __IScanningTuner_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IScanningTuner, 0x1dfd0a5c, 0x0284, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1dfd0a5c-0284-11d3-9d8e-00c04f72d980")
+IScanningTuner : public ITuner
+{
+    virtual HRESULT STDMETHODCALLTYPE SeekUp(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SeekDown(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScanUp(
+        LONG MillisecondsPause) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScanDown(
+        LONG MillisecondsPause) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AutoProgram(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IScanningTuner, 0x1dfd0a5c, 0x0284, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IScanningTunerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IScanningTuner* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IScanningTuner* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IScanningTuner* This);
+
+    /*** ITuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IScanningTuner* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
+        IScanningTuner* This,
+        ITuningSpace *TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
+        IScanningTuner* This,
+        IEnumTuningSpaces **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
+        IScanningTuner* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
+        IScanningTuner* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *Validate)(
+        IScanningTuner* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
+        IScanningTuner* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
+        IScanningTuner* This,
+        IComponentTypes *ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
+        IScanningTuner* This,
+        LONG *Strength);
+
+    HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
+        IScanningTuner* This,
+        LONG Interval);
+
+    /*** IScanningTuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *SeekUp)(
+        IScanningTuner* This);
+
+    HRESULT (STDMETHODCALLTYPE *SeekDown)(
+        IScanningTuner* This);
+
+    HRESULT (STDMETHODCALLTYPE *ScanUp)(
+        IScanningTuner* This,
+        LONG MillisecondsPause);
+
+    HRESULT (STDMETHODCALLTYPE *ScanDown)(
+        IScanningTuner* This,
+        LONG MillisecondsPause);
+
+    HRESULT (STDMETHODCALLTYPE *AutoProgram)(
+        IScanningTuner* This);
+
+    END_INTERFACE
+} IScanningTunerVtbl;
+interface IScanningTuner {
+    CONST_VTBL IScanningTunerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IScanningTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IScanningTuner_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IScanningTuner_Release(This) (This)->lpVtbl->Release(This)
+/*** ITuner methods ***/
+#define IScanningTuner_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IScanningTuner_put_TuningSpace(This,TuningSpace) (This)->lpVtbl->put_TuningSpace(This,TuningSpace)
+#define IScanningTuner_EnumTuningSpaces(This,ppEnum) (This)->lpVtbl->EnumTuningSpaces(This,ppEnum)
+#define IScanningTuner_get_TuneRequest(This,TuneRequest) (This)->lpVtbl->get_TuneRequest(This,TuneRequest)
+#define IScanningTuner_put_TuneRequest(This,TuneRequest) (This)->lpVtbl->put_TuneRequest(This,TuneRequest)
+#define IScanningTuner_Validate(This,TuneRequest) (This)->lpVtbl->Validate(This,TuneRequest)
+#define IScanningTuner_get_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes)
+#define IScanningTuner_put_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes)
+#define IScanningTuner_get_SignalStrength(This,Strength) (This)->lpVtbl->get_SignalStrength(This,Strength)
+#define IScanningTuner_TriggerSignalEvents(This,Interval) (This)->lpVtbl->TriggerSignalEvents(This,Interval)
+/*** IScanningTuner methods ***/
+#define IScanningTuner_SeekUp(This) (This)->lpVtbl->SeekUp(This)
+#define IScanningTuner_SeekDown(This) (This)->lpVtbl->SeekDown(This)
+#define IScanningTuner_ScanUp(This,MillisecondsPause) (This)->lpVtbl->ScanUp(This,MillisecondsPause)
+#define IScanningTuner_ScanDown(This,MillisecondsPause) (This)->lpVtbl->ScanDown(This,MillisecondsPause)
+#define IScanningTuner_AutoProgram(This) (This)->lpVtbl->AutoProgram(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IScanningTuner_QueryInterface(IScanningTuner* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IScanningTuner_AddRef(IScanningTuner* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IScanningTuner_Release(IScanningTuner* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITuner methods ***/
+static FORCEINLINE HRESULT IScanningTuner_get_TuningSpace(IScanningTuner* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IScanningTuner_put_TuningSpace(IScanningTuner* This,ITuningSpace *TuningSpace) {
+    return This->lpVtbl->put_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IScanningTuner_EnumTuningSpaces(IScanningTuner* This,IEnumTuningSpaces **ppEnum) {
+    return This->lpVtbl->EnumTuningSpaces(This,ppEnum);
+}
+static FORCEINLINE HRESULT IScanningTuner_get_TuneRequest(IScanningTuner* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->get_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTuner_put_TuneRequest(IScanningTuner* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->put_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTuner_Validate(IScanningTuner* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->Validate(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTuner_get_PreferredComponentTypes(IScanningTuner* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IScanningTuner_put_PreferredComponentTypes(IScanningTuner* This,IComponentTypes *ComponentTypes) {
+    return This->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IScanningTuner_get_SignalStrength(IScanningTuner* This,LONG *Strength) {
+    return This->lpVtbl->get_SignalStrength(This,Strength);
+}
+static FORCEINLINE HRESULT IScanningTuner_TriggerSignalEvents(IScanningTuner* This,LONG Interval) {
+    return This->lpVtbl->TriggerSignalEvents(This,Interval);
+}
+/*** IScanningTuner methods ***/
+static FORCEINLINE HRESULT IScanningTuner_SeekUp(IScanningTuner* This) {
+    return This->lpVtbl->SeekUp(This);
+}
+static FORCEINLINE HRESULT IScanningTuner_SeekDown(IScanningTuner* This) {
+    return This->lpVtbl->SeekDown(This);
+}
+static FORCEINLINE HRESULT IScanningTuner_ScanUp(IScanningTuner* This,LONG MillisecondsPause) {
+    return This->lpVtbl->ScanUp(This,MillisecondsPause);
+}
+static FORCEINLINE HRESULT IScanningTuner_ScanDown(IScanningTuner* This,LONG MillisecondsPause) {
+    return This->lpVtbl->ScanDown(This,MillisecondsPause);
+}
+static FORCEINLINE HRESULT IScanningTuner_AutoProgram(IScanningTuner* This) {
+    return This->lpVtbl->AutoProgram(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IScanningTuner_SeekUp_Proxy(
+    IScanningTuner* This);
+void __RPC_STUB IScanningTuner_SeekUp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTuner_SeekDown_Proxy(
+    IScanningTuner* This);
+void __RPC_STUB IScanningTuner_SeekDown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTuner_ScanUp_Proxy(
+    IScanningTuner* This,
+    LONG MillisecondsPause);
+void __RPC_STUB IScanningTuner_ScanUp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTuner_ScanDown_Proxy(
+    IScanningTuner* This,
+    LONG MillisecondsPause);
+void __RPC_STUB IScanningTuner_ScanDown_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTuner_AutoProgram_Proxy(
+    IScanningTuner* This);
+void __RPC_STUB IScanningTuner_AutoProgram_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IScanningTuner_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IScanningTunerEx interface
+ */
+#ifndef __IScanningTunerEx_INTERFACE_DEFINED__
+#define __IScanningTunerEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IScanningTunerEx, 0x04bbd195, 0x0e2d, 0x4593, 0x9b,0xd5, 0x4f,0x90,0x8b,0xc3,0x3c,0xf5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("04bbd195-0e2d-4593-9bd5-4f908bc33cf5")
+IScanningTunerEx : public IScanningTuner
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentLocator(
+        ILocator **pILocator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PerformExhaustiveScan(
+        LONG dwLowerFreq,
+        LONG dwHigherFreq,
+        VARIANT_BOOL bFineTune,
+        HEVENT hEvent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TerminateCurrentScan(
+        LONG *pcurrentFreq) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResumeCurrentScan(
+        HEVENT hEvent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTunerScanningCapability(
+        LONG *HardwareAssistedScanning,
+        LONG *NumStandardsSupported,
+        GUID *BroadcastStandards) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTunerStatus(
+        LONG *SecondsLeft,
+        LONG *CurrentLockType,
+        LONG *AutoDetect,
+        LONG *CurrentFreq) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentTunerStandardCapability(
+        GUID CurrentBroadcastStandard,
+        LONG *SettlingTime,
+        LONG *TvStandardsSupported) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetScanSignalTypeFilter(
+        LONG ScanModulationTypes,
+        LONG AnalogVideoStandard) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IScanningTunerEx, 0x04bbd195, 0x0e2d, 0x4593, 0x9b,0xd5, 0x4f,0x90,0x8b,0xc3,0x3c,0xf5)
+#endif
+#else
+typedef struct IScanningTunerExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IScanningTunerEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IScanningTunerEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IScanningTunerEx* This);
+
+    /*** ITuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
+        IScanningTunerEx* This,
+        ITuningSpace **TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
+        IScanningTunerEx* This,
+        ITuningSpace *TuningSpace);
+
+    HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
+        IScanningTunerEx* This,
+        IEnumTuningSpaces **ppEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
+        IScanningTunerEx* This,
+        ITuneRequest **TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
+        IScanningTunerEx* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *Validate)(
+        IScanningTunerEx* This,
+        ITuneRequest *TuneRequest);
+
+    HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
+        IScanningTunerEx* This,
+        IComponentTypes **ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
+        IScanningTunerEx* This,
+        IComponentTypes *ComponentTypes);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
+        IScanningTunerEx* This,
+        LONG *Strength);
+
+    HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
+        IScanningTunerEx* This,
+        LONG Interval);
+
+    /*** IScanningTuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *SeekUp)(
+        IScanningTunerEx* This);
+
+    HRESULT (STDMETHODCALLTYPE *SeekDown)(
+        IScanningTunerEx* This);
+
+    HRESULT (STDMETHODCALLTYPE *ScanUp)(
+        IScanningTunerEx* This,
+        LONG MillisecondsPause);
+
+    HRESULT (STDMETHODCALLTYPE *ScanDown)(
+        IScanningTunerEx* This,
+        LONG MillisecondsPause);
+
+    HRESULT (STDMETHODCALLTYPE *AutoProgram)(
+        IScanningTunerEx* This);
+
+    /*** IScanningTunerEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCurrentLocator)(
+        IScanningTunerEx* This,
+        ILocator **pILocator);
+
+    HRESULT (STDMETHODCALLTYPE *PerformExhaustiveScan)(
+        IScanningTunerEx* This,
+        LONG dwLowerFreq,
+        LONG dwHigherFreq,
+        VARIANT_BOOL bFineTune,
+        HEVENT hEvent);
+
+    HRESULT (STDMETHODCALLTYPE *TerminateCurrentScan)(
+        IScanningTunerEx* This,
+        LONG *pcurrentFreq);
+
+    HRESULT (STDMETHODCALLTYPE *ResumeCurrentScan)(
+        IScanningTunerEx* This,
+        HEVENT hEvent);
+
+    HRESULT (STDMETHODCALLTYPE *GetTunerScanningCapability)(
+        IScanningTunerEx* This,
+        LONG *HardwareAssistedScanning,
+        LONG *NumStandardsSupported,
+        GUID *BroadcastStandards);
+
+    HRESULT (STDMETHODCALLTYPE *GetTunerStatus)(
+        IScanningTunerEx* This,
+        LONG *SecondsLeft,
+        LONG *CurrentLockType,
+        LONG *AutoDetect,
+        LONG *CurrentFreq);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentTunerStandardCapability)(
+        IScanningTunerEx* This,
+        GUID CurrentBroadcastStandard,
+        LONG *SettlingTime,
+        LONG *TvStandardsSupported);
+
+    HRESULT (STDMETHODCALLTYPE *SetScanSignalTypeFilter)(
+        IScanningTunerEx* This,
+        LONG ScanModulationTypes,
+        LONG AnalogVideoStandard);
+
+    END_INTERFACE
+} IScanningTunerExVtbl;
+interface IScanningTunerEx {
+    CONST_VTBL IScanningTunerExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IScanningTunerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IScanningTunerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IScanningTunerEx_Release(This) (This)->lpVtbl->Release(This)
+/*** ITuner methods ***/
+#define IScanningTunerEx_get_TuningSpace(This,TuningSpace) (This)->lpVtbl->get_TuningSpace(This,TuningSpace)
+#define IScanningTunerEx_put_TuningSpace(This,TuningSpace) (This)->lpVtbl->put_TuningSpace(This,TuningSpace)
+#define IScanningTunerEx_EnumTuningSpaces(This,ppEnum) (This)->lpVtbl->EnumTuningSpaces(This,ppEnum)
+#define IScanningTunerEx_get_TuneRequest(This,TuneRequest) (This)->lpVtbl->get_TuneRequest(This,TuneRequest)
+#define IScanningTunerEx_put_TuneRequest(This,TuneRequest) (This)->lpVtbl->put_TuneRequest(This,TuneRequest)
+#define IScanningTunerEx_Validate(This,TuneRequest) (This)->lpVtbl->Validate(This,TuneRequest)
+#define IScanningTunerEx_get_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes)
+#define IScanningTunerEx_put_PreferredComponentTypes(This,ComponentTypes) (This)->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes)
+#define IScanningTunerEx_get_SignalStrength(This,Strength) (This)->lpVtbl->get_SignalStrength(This,Strength)
+#define IScanningTunerEx_TriggerSignalEvents(This,Interval) (This)->lpVtbl->TriggerSignalEvents(This,Interval)
+/*** IScanningTuner methods ***/
+#define IScanningTunerEx_SeekUp(This) (This)->lpVtbl->SeekUp(This)
+#define IScanningTunerEx_SeekDown(This) (This)->lpVtbl->SeekDown(This)
+#define IScanningTunerEx_ScanUp(This,MillisecondsPause) (This)->lpVtbl->ScanUp(This,MillisecondsPause)
+#define IScanningTunerEx_ScanDown(This,MillisecondsPause) (This)->lpVtbl->ScanDown(This,MillisecondsPause)
+#define IScanningTunerEx_AutoProgram(This) (This)->lpVtbl->AutoProgram(This)
+/*** IScanningTunerEx methods ***/
+#define IScanningTunerEx_GetCurrentLocator(This,pILocator) (This)->lpVtbl->GetCurrentLocator(This,pILocator)
+#define IScanningTunerEx_PerformExhaustiveScan(This,dwLowerFreq,dwHigherFreq,bFineTune,hEvent) (This)->lpVtbl->PerformExhaustiveScan(This,dwLowerFreq,dwHigherFreq,bFineTune,hEvent)
+#define IScanningTunerEx_TerminateCurrentScan(This,pcurrentFreq) (This)->lpVtbl->TerminateCurrentScan(This,pcurrentFreq)
+#define IScanningTunerEx_ResumeCurrentScan(This,hEvent) (This)->lpVtbl->ResumeCurrentScan(This,hEvent)
+#define IScanningTunerEx_GetTunerScanningCapability(This,HardwareAssistedScanning,NumStandardsSupported,BroadcastStandards) (This)->lpVtbl->GetTunerScanningCapability(This,HardwareAssistedScanning,NumStandardsSupported,BroadcastStandards)
+#define IScanningTunerEx_GetTunerStatus(This,SecondsLeft,CurrentLockType,AutoDetect,CurrentFreq) (This)->lpVtbl->GetTunerStatus(This,SecondsLeft,CurrentLockType,AutoDetect,CurrentFreq)
+#define IScanningTunerEx_GetCurrentTunerStandardCapability(This,CurrentBroadcastStandard,SettlingTime,TvStandardsSupported) (This)->lpVtbl->GetCurrentTunerStandardCapability(This,CurrentBroadcastStandard,SettlingTime,TvStandardsSupported)
+#define IScanningTunerEx_SetScanSignalTypeFilter(This,ScanModulationTypes,AnalogVideoStandard) (This)->lpVtbl->SetScanSignalTypeFilter(This,ScanModulationTypes,AnalogVideoStandard)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IScanningTunerEx_QueryInterface(IScanningTunerEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IScanningTunerEx_AddRef(IScanningTunerEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IScanningTunerEx_Release(IScanningTunerEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** ITuner methods ***/
+static FORCEINLINE HRESULT IScanningTunerEx_get_TuningSpace(IScanningTunerEx* This,ITuningSpace **TuningSpace) {
+    return This->lpVtbl->get_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_put_TuningSpace(IScanningTunerEx* This,ITuningSpace *TuningSpace) {
+    return This->lpVtbl->put_TuningSpace(This,TuningSpace);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_EnumTuningSpaces(IScanningTunerEx* This,IEnumTuningSpaces **ppEnum) {
+    return This->lpVtbl->EnumTuningSpaces(This,ppEnum);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_get_TuneRequest(IScanningTunerEx* This,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->get_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_put_TuneRequest(IScanningTunerEx* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->put_TuneRequest(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_Validate(IScanningTunerEx* This,ITuneRequest *TuneRequest) {
+    return This->lpVtbl->Validate(This,TuneRequest);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_get_PreferredComponentTypes(IScanningTunerEx* This,IComponentTypes **ComponentTypes) {
+    return This->lpVtbl->get_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_put_PreferredComponentTypes(IScanningTunerEx* This,IComponentTypes *ComponentTypes) {
+    return This->lpVtbl->put_PreferredComponentTypes(This,ComponentTypes);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_get_SignalStrength(IScanningTunerEx* This,LONG *Strength) {
+    return This->lpVtbl->get_SignalStrength(This,Strength);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_TriggerSignalEvents(IScanningTunerEx* This,LONG Interval) {
+    return This->lpVtbl->TriggerSignalEvents(This,Interval);
+}
+/*** IScanningTuner methods ***/
+static FORCEINLINE HRESULT IScanningTunerEx_SeekUp(IScanningTunerEx* This) {
+    return This->lpVtbl->SeekUp(This);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_SeekDown(IScanningTunerEx* This) {
+    return This->lpVtbl->SeekDown(This);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_ScanUp(IScanningTunerEx* This,LONG MillisecondsPause) {
+    return This->lpVtbl->ScanUp(This,MillisecondsPause);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_ScanDown(IScanningTunerEx* This,LONG MillisecondsPause) {
+    return This->lpVtbl->ScanDown(This,MillisecondsPause);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_AutoProgram(IScanningTunerEx* This) {
+    return This->lpVtbl->AutoProgram(This);
+}
+/*** IScanningTunerEx methods ***/
+static FORCEINLINE HRESULT IScanningTunerEx_GetCurrentLocator(IScanningTunerEx* This,ILocator **pILocator) {
+    return This->lpVtbl->GetCurrentLocator(This,pILocator);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_PerformExhaustiveScan(IScanningTunerEx* This,LONG dwLowerFreq,LONG dwHigherFreq,VARIANT_BOOL bFineTune,HEVENT hEvent) {
+    return This->lpVtbl->PerformExhaustiveScan(This,dwLowerFreq,dwHigherFreq,bFineTune,hEvent);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_TerminateCurrentScan(IScanningTunerEx* This,LONG *pcurrentFreq) {
+    return This->lpVtbl->TerminateCurrentScan(This,pcurrentFreq);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_ResumeCurrentScan(IScanningTunerEx* This,HEVENT hEvent) {
+    return This->lpVtbl->ResumeCurrentScan(This,hEvent);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_GetTunerScanningCapability(IScanningTunerEx* This,LONG *HardwareAssistedScanning,LONG *NumStandardsSupported,GUID *BroadcastStandards) {
+    return This->lpVtbl->GetTunerScanningCapability(This,HardwareAssistedScanning,NumStandardsSupported,BroadcastStandards);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_GetTunerStatus(IScanningTunerEx* This,LONG *SecondsLeft,LONG *CurrentLockType,LONG *AutoDetect,LONG *CurrentFreq) {
+    return This->lpVtbl->GetTunerStatus(This,SecondsLeft,CurrentLockType,AutoDetect,CurrentFreq);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_GetCurrentTunerStandardCapability(IScanningTunerEx* This,GUID CurrentBroadcastStandard,LONG *SettlingTime,LONG *TvStandardsSupported) {
+    return This->lpVtbl->GetCurrentTunerStandardCapability(This,CurrentBroadcastStandard,SettlingTime,TvStandardsSupported);
+}
+static FORCEINLINE HRESULT IScanningTunerEx_SetScanSignalTypeFilter(IScanningTunerEx* This,LONG ScanModulationTypes,LONG AnalogVideoStandard) {
+    return This->lpVtbl->SetScanSignalTypeFilter(This,ScanModulationTypes,AnalogVideoStandard);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetCurrentLocator_Proxy(
+    IScanningTunerEx* This,
+    ILocator **pILocator);
+void __RPC_STUB IScanningTunerEx_GetCurrentLocator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_PerformExhaustiveScan_Proxy(
+    IScanningTunerEx* This,
+    LONG dwLowerFreq,
+    LONG dwHigherFreq,
+    VARIANT_BOOL bFineTune,
+    HEVENT hEvent);
+void __RPC_STUB IScanningTunerEx_PerformExhaustiveScan_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_TerminateCurrentScan_Proxy(
+    IScanningTunerEx* This,
+    LONG *pcurrentFreq);
+void __RPC_STUB IScanningTunerEx_TerminateCurrentScan_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_ResumeCurrentScan_Proxy(
+    IScanningTunerEx* This,
+    HEVENT hEvent);
+void __RPC_STUB IScanningTunerEx_ResumeCurrentScan_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetTunerScanningCapability_Proxy(
+    IScanningTunerEx* This,
+    LONG *HardwareAssistedScanning,
+    LONG *NumStandardsSupported,
+    GUID *BroadcastStandards);
+void __RPC_STUB IScanningTunerEx_GetTunerScanningCapability_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetTunerStatus_Proxy(
+    IScanningTunerEx* This,
+    LONG *SecondsLeft,
+    LONG *CurrentLockType,
+    LONG *AutoDetect,
+    LONG *CurrentFreq);
+void __RPC_STUB IScanningTunerEx_GetTunerStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetCurrentTunerStandardCapability_Proxy(
+    IScanningTunerEx* This,
+    GUID CurrentBroadcastStandard,
+    LONG *SettlingTime,
+    LONG *TvStandardsSupported);
+void __RPC_STUB IScanningTunerEx_GetCurrentTunerStandardCapability_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IScanningTunerEx_SetScanSignalTypeFilter_Proxy(
+    IScanningTunerEx* This,
+    LONG ScanModulationTypes,
+    LONG AnalogVideoStandard);
+void __RPC_STUB IScanningTunerEx_SetScanSignalTypeFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IScanningTunerEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IComponentType interface
+ */
+#ifndef __IComponentType_INTERFACE_DEFINED__
+#define __IComponentType_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComponentType, 0x6a340dc0, 0x0311, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6a340dc0-0311-11d3-9d8e-00c04f72d980")
+IComponentType : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Category(
+        ComponentCategory *Category) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Category(
+        ComponentCategory Category) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MediaMajorType(
+        BSTR *MediaMajorType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MediaMajorType(
+        BSTR MediaMajorType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__MediaMajorType(
+        GUID *MediaMajorTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put__MediaMajorType(
+        REFCLSID MediaMajorTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MediaSubType(
+        BSTR *MediaSubType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MediaSubType(
+        BSTR MediaSubType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__MediaSubType(
+        GUID *MediaSubTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put__MediaSubType(
+        REFCLSID MediaSubTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MediaFormatType(
+        BSTR *MediaFormatType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MediaFormatType(
+        BSTR MediaFormatType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__MediaFormatType(
+        GUID *MediaFormatTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put__MediaFormatType(
+        REFCLSID MediaFormatTypeGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MediaType(
+        AM_MEDIA_TYPE *MediaType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MediaType(
+        AM_MEDIA_TYPE *MediaType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IComponentType **NewCT) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IComponentType, 0x6a340dc0, 0x0311, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IComponentTypeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComponentType* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComponentType* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComponentType* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IComponentType* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IComponentType* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IComponentType* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IComponentType* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Category)(
+        IComponentType* This,
+        ComponentCategory *Category);
+
+    HRESULT (STDMETHODCALLTYPE *put_Category)(
+        IComponentType* This,
+        ComponentCategory Category);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
+        IComponentType* This,
+        BSTR *MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
+        IComponentType* This,
+        BSTR MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
+        IComponentType* This,
+        GUID *MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
+        IComponentType* This,
+        REFCLSID MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
+        IComponentType* This,
+        BSTR *MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
+        IComponentType* This,
+        BSTR MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
+        IComponentType* This,
+        GUID *MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
+        IComponentType* This,
+        REFCLSID MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
+        IComponentType* This,
+        BSTR *MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
+        IComponentType* This,
+        BSTR MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
+        IComponentType* This,
+        GUID *MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
+        IComponentType* This,
+        REFCLSID MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaType)(
+        IComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaType)(
+        IComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IComponentType* This,
+        IComponentType **NewCT);
+
+    END_INTERFACE
+} IComponentTypeVtbl;
+interface IComponentType {
+    CONST_VTBL IComponentTypeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IComponentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IComponentType_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IComponentType_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IComponentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IComponentType_Clone(This,ppNewCT) (This)->lpVtbl->Clone(This,ppNewCT)
-#define IComponentType_get__MediaFormatType(This,pMediaFormatType) (This)->lpVtbl->get__MediaFormatType(This,pMediaFormatType)
-#define IComponentType_get__MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorType)
-#define IComponentType_get__MediaSubType(This,pMediaSubType) (This)->lpVtbl->get__MediaSubType(This,pMediaSubType)
-#define IComponentType_get_Category(This,pCategory) (This)->lpVtbl->get_Category(This,pCategory)
-#define IComponentType_get_MediaFormatType(This,pMediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,pMediaFormatType)
-#define IComponentType_get_MediaMajorType(This,pMediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,pMediaMajorType)
-#define IComponentType_get_MediaSubType(This,pMediaSubType) (This)->lpVtbl->get_MediaSubType(This,pMediaSubType)
-#define IComponentType_get_MediaType(This,pMediaType) (This)->lpVtbl->get_MediaType(This,pMediaType)
-#define IComponentType_put__MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatType)
-#define IComponentType_put__MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorType)
-#define IComponentType_put__MediaSubType(This,MediaSubType) (This)->lpVtbl->put__MediaSubType(This,MediaSubType)
+/*** IComponentType methods ***/
+#define IComponentType_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
 #define IComponentType_put_Category(This,Category) (This)->lpVtbl->put_Category(This,Category)
-#define IComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define IComponentType_get_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,MediaMajorType)
 #define IComponentType_put_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put_MediaMajorType(This,MediaMajorType)
+#define IComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid)
+#define IComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid)
+#define IComponentType_get_MediaSubType(This,MediaSubType) (This)->lpVtbl->get_MediaSubType(This,MediaSubType)
 #define IComponentType_put_MediaSubType(This,MediaSubType) (This)->lpVtbl->put_MediaSubType(This,MediaSubType)
+#define IComponentType_get__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid)
+#define IComponentType_put__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid)
+#define IComponentType_get_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,MediaFormatType)
+#define IComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define IComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid)
+#define IComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid)
+#define IComponentType_get_MediaType(This,MediaType) (This)->lpVtbl->get_MediaType(This,MediaType)
 #define IComponentType_put_MediaType(This,MediaType) (This)->lpVtbl->put_MediaType(This,MediaType)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IEnumComponentTypes
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#define IComponentType_Clone(This,NewCT) (This)->lpVtbl->Clone(This,NewCT)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IComponentType_QueryInterface(IComponentType* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IComponentType_AddRef(IComponentType* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IComponentType_Release(IComponentType* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IComponentType_GetTypeInfoCount(IComponentType* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IComponentType_GetTypeInfo(IComponentType* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IComponentType_GetIDsOfNames(IComponentType* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IComponentType_Invoke(IComponentType* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentType methods ***/
+static FORCEINLINE HRESULT IComponentType_get_Category(IComponentType* This,ComponentCategory *Category) {
+    return This->lpVtbl->get_Category(This,Category);
+}
+static FORCEINLINE HRESULT IComponentType_put_Category(IComponentType* This,ComponentCategory Category) {
+    return This->lpVtbl->put_Category(This,Category);
+}
+static FORCEINLINE HRESULT IComponentType_get_MediaMajorType(IComponentType* This,BSTR *MediaMajorType) {
+    return This->lpVtbl->get_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IComponentType_put_MediaMajorType(IComponentType* This,BSTR MediaMajorType) {
+    return This->lpVtbl->put_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IComponentType_get__MediaMajorType(IComponentType* This,GUID *MediaMajorTypeGuid) {
+    return This->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_put__MediaMajorType(IComponentType* This,REFCLSID MediaMajorTypeGuid) {
+    return This->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_get_MediaSubType(IComponentType* This,BSTR *MediaSubType) {
+    return This->lpVtbl->get_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IComponentType_put_MediaSubType(IComponentType* This,BSTR MediaSubType) {
+    return This->lpVtbl->put_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IComponentType_get__MediaSubType(IComponentType* This,GUID *MediaSubTypeGuid) {
+    return This->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_put__MediaSubType(IComponentType* This,REFCLSID MediaSubTypeGuid) {
+    return This->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_get_MediaFormatType(IComponentType* This,BSTR *MediaFormatType) {
+    return This->lpVtbl->get_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IComponentType_put_MediaFormatType(IComponentType* This,BSTR MediaFormatType) {
+    return This->lpVtbl->put_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IComponentType_get__MediaFormatType(IComponentType* This,GUID *MediaFormatTypeGuid) {
+    return This->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_put__MediaFormatType(IComponentType* This,REFCLSID MediaFormatTypeGuid) {
+    return This->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IComponentType_get_MediaType(IComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->get_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IComponentType_put_MediaType(IComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->put_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IComponentType_Clone(IComponentType* This,IComponentType **NewCT) {
+    return This->lpVtbl->Clone(This,NewCT);
+}
 #endif
-DECLARE_INTERFACE_(IEnumComponentTypes,IUnknown)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComponentType_get_Category_Proxy(
+    IComponentType* This,
+    ComponentCategory *Category);
+void __RPC_STUB IComponentType_get_Category_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put_Category_Proxy(
+    IComponentType* This,
+    ComponentCategory Category);
+void __RPC_STUB IComponentType_put_Category_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get_MediaMajorType_Proxy(
+    IComponentType* This,
+    BSTR *MediaMajorType);
+void __RPC_STUB IComponentType_get_MediaMajorType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put_MediaMajorType_Proxy(
+    IComponentType* This,
+    BSTR MediaMajorType);
+void __RPC_STUB IComponentType_put_MediaMajorType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get__MediaMajorType_Proxy(
+    IComponentType* This,
+    GUID *MediaMajorTypeGuid);
+void __RPC_STUB IComponentType_get__MediaMajorType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put__MediaMajorType_Proxy(
+    IComponentType* This,
+    REFCLSID MediaMajorTypeGuid);
+void __RPC_STUB IComponentType_put__MediaMajorType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get_MediaSubType_Proxy(
+    IComponentType* This,
+    BSTR *MediaSubType);
+void __RPC_STUB IComponentType_get_MediaSubType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put_MediaSubType_Proxy(
+    IComponentType* This,
+    BSTR MediaSubType);
+void __RPC_STUB IComponentType_put_MediaSubType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get__MediaSubType_Proxy(
+    IComponentType* This,
+    GUID *MediaSubTypeGuid);
+void __RPC_STUB IComponentType_get__MediaSubType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put__MediaSubType_Proxy(
+    IComponentType* This,
+    REFCLSID MediaSubTypeGuid);
+void __RPC_STUB IComponentType_put__MediaSubType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get_MediaFormatType_Proxy(
+    IComponentType* This,
+    BSTR *MediaFormatType);
+void __RPC_STUB IComponentType_get_MediaFormatType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put_MediaFormatType_Proxy(
+    IComponentType* This,
+    BSTR MediaFormatType);
+void __RPC_STUB IComponentType_put_MediaFormatType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get__MediaFormatType_Proxy(
+    IComponentType* This,
+    GUID *MediaFormatTypeGuid);
+void __RPC_STUB IComponentType_get__MediaFormatType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put__MediaFormatType_Proxy(
+    IComponentType* This,
+    REFCLSID MediaFormatTypeGuid);
+void __RPC_STUB IComponentType_put__MediaFormatType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_get_MediaType_Proxy(
+    IComponentType* This,
+    AM_MEDIA_TYPE *MediaType);
+void __RPC_STUB IComponentType_get_MediaType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_put_MediaType_Proxy(
+    IComponentType* This,
+    AM_MEDIA_TYPE *MediaType);
+void __RPC_STUB IComponentType_put_MediaType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentType_Clone_Proxy(
+    IComponentType* This,
+    IComponentType **NewCT);
+void __RPC_STUB IComponentType_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComponentType_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ILanguageComponentType interface
+ */
+#ifndef __ILanguageComponentType_INTERFACE_DEFINED__
+#define __ILanguageComponentType_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ILanguageComponentType, 0xb874c8ba, 0x0fa2, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b874c8ba-0fa2-11d3-9d8e-00c04f72d980")
+ILanguageComponentType : public IComponentType
 {
+    virtual HRESULT STDMETHODCALLTYPE get_LangID(
+        LONG *LangID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LangID(
+        LONG LangID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ILanguageComponentType, 0xb874c8ba, 0x0fa2, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct ILanguageComponentTypeVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ILanguageComponentType* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IEnumComponentTypes methods */
-    STDMETHOD_(HRESULT,Clone)(THIS_ IEnumComponentTypes **ppEnum) PURE;
-    STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt,IComponentType **pprgelt,ULONG *pceltFetched) PURE;
-    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
-    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ILanguageComponentType* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ILanguageComponentType* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ILanguageComponentType* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ILanguageComponentType* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ILanguageComponentType* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ILanguageComponentType* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Category)(
+        ILanguageComponentType* This,
+        ComponentCategory *Category);
+
+    HRESULT (STDMETHODCALLTYPE *put_Category)(
+        ILanguageComponentType* This,
+        ComponentCategory Category);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
+        ILanguageComponentType* This,
+        BSTR *MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
+        ILanguageComponentType* This,
+        BSTR MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
+        ILanguageComponentType* This,
+        GUID *MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
+        ILanguageComponentType* This,
+        REFCLSID MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
+        ILanguageComponentType* This,
+        BSTR *MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
+        ILanguageComponentType* This,
+        BSTR MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
+        ILanguageComponentType* This,
+        GUID *MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
+        ILanguageComponentType* This,
+        REFCLSID MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
+        ILanguageComponentType* This,
+        BSTR *MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
+        ILanguageComponentType* This,
+        BSTR MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
+        ILanguageComponentType* This,
+        GUID *MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
+        ILanguageComponentType* This,
+        REFCLSID MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaType)(
+        ILanguageComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaType)(
+        ILanguageComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        ILanguageComponentType* This,
+        IComponentType **NewCT);
+
+    /*** ILanguageComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_LangID)(
+        ILanguageComponentType* This,
+        LONG *LangID);
+
+    HRESULT (STDMETHODCALLTYPE *put_LangID)(
+        ILanguageComponentType* This,
+        LONG LangID);
 
     END_INTERFACE
+} ILanguageComponentTypeVtbl;
+interface ILanguageComponentType {
+    CONST_VTBL ILanguageComponentTypeVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ILanguageComponentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILanguageComponentType_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ILanguageComponentType_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define ILanguageComponentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define ILanguageComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define ILanguageComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define ILanguageComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentType methods ***/
+#define ILanguageComponentType_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
+#define ILanguageComponentType_put_Category(This,Category) (This)->lpVtbl->put_Category(This,Category)
+#define ILanguageComponentType_get_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,MediaMajorType)
+#define ILanguageComponentType_put_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put_MediaMajorType(This,MediaMajorType)
+#define ILanguageComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid)
+#define ILanguageComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid)
+#define ILanguageComponentType_get_MediaSubType(This,MediaSubType) (This)->lpVtbl->get_MediaSubType(This,MediaSubType)
+#define ILanguageComponentType_put_MediaSubType(This,MediaSubType) (This)->lpVtbl->put_MediaSubType(This,MediaSubType)
+#define ILanguageComponentType_get__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid)
+#define ILanguageComponentType_put__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid)
+#define ILanguageComponentType_get_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,MediaFormatType)
+#define ILanguageComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define ILanguageComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid)
+#define ILanguageComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid)
+#define ILanguageComponentType_get_MediaType(This,MediaType) (This)->lpVtbl->get_MediaType(This,MediaType)
+#define ILanguageComponentType_put_MediaType(This,MediaType) (This)->lpVtbl->put_MediaType(This,MediaType)
+#define ILanguageComponentType_Clone(This,NewCT) (This)->lpVtbl->Clone(This,NewCT)
+/*** ILanguageComponentType methods ***/
+#define ILanguageComponentType_get_LangID(This,LangID) (This)->lpVtbl->get_LangID(This,LangID)
+#define ILanguageComponentType_put_LangID(This,LangID) (This)->lpVtbl->put_LangID(This,LangID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ILanguageComponentType_QueryInterface(ILanguageComponentType* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ILanguageComponentType_AddRef(ILanguageComponentType* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ILanguageComponentType_Release(ILanguageComponentType* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ILanguageComponentType_GetTypeInfoCount(ILanguageComponentType* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_GetTypeInfo(ILanguageComponentType* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_GetIDsOfNames(ILanguageComponentType* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_Invoke(ILanguageComponentType* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentType methods ***/
+static FORCEINLINE HRESULT ILanguageComponentType_get_Category(ILanguageComponentType* This,ComponentCategory *Category) {
+    return This->lpVtbl->get_Category(This,Category);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_Category(ILanguageComponentType* This,ComponentCategory Category) {
+    return This->lpVtbl->put_Category(This,Category);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get_MediaMajorType(ILanguageComponentType* This,BSTR *MediaMajorType) {
+    return This->lpVtbl->get_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_MediaMajorType(ILanguageComponentType* This,BSTR MediaMajorType) {
+    return This->lpVtbl->put_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get__MediaMajorType(ILanguageComponentType* This,GUID *MediaMajorTypeGuid) {
+    return This->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put__MediaMajorType(ILanguageComponentType* This,REFCLSID MediaMajorTypeGuid) {
+    return This->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get_MediaSubType(ILanguageComponentType* This,BSTR *MediaSubType) {
+    return This->lpVtbl->get_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_MediaSubType(ILanguageComponentType* This,BSTR MediaSubType) {
+    return This->lpVtbl->put_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get__MediaSubType(ILanguageComponentType* This,GUID *MediaSubTypeGuid) {
+    return This->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put__MediaSubType(ILanguageComponentType* This,REFCLSID MediaSubTypeGuid) {
+    return This->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get_MediaFormatType(ILanguageComponentType* This,BSTR *MediaFormatType) {
+    return This->lpVtbl->get_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_MediaFormatType(ILanguageComponentType* This,BSTR MediaFormatType) {
+    return This->lpVtbl->put_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get__MediaFormatType(ILanguageComponentType* This,GUID *MediaFormatTypeGuid) {
+    return This->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put__MediaFormatType(ILanguageComponentType* This,REFCLSID MediaFormatTypeGuid) {
+    return This->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_get_MediaType(ILanguageComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->get_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_MediaType(ILanguageComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->put_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_Clone(ILanguageComponentType* This,IComponentType **NewCT) {
+    return This->lpVtbl->Clone(This,NewCT);
+}
+/*** ILanguageComponentType methods ***/
+static FORCEINLINE HRESULT ILanguageComponentType_get_LangID(ILanguageComponentType* This,LONG *LangID) {
+    return This->lpVtbl->get_LangID(This,LangID);
+}
+static FORCEINLINE HRESULT ILanguageComponentType_put_LangID(ILanguageComponentType* This,LONG LangID) {
+    return This->lpVtbl->put_LangID(This,LangID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ILanguageComponentType_get_LangID_Proxy(
+    ILanguageComponentType* This,
+    LONG *LangID);
+void __RPC_STUB ILanguageComponentType_get_LangID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILanguageComponentType_put_LangID_Proxy(
+    ILanguageComponentType* This,
+    LONG LangID);
+void __RPC_STUB ILanguageComponentType_put_LangID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ILanguageComponentType_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2ComponentType interface
+ */
+#ifndef __IMPEG2ComponentType_INTERFACE_DEFINED__
+#define __IMPEG2ComponentType_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2ComponentType, 0x2c073d84, 0xb51c, 0x48c9, 0xaa,0x9f, 0x68,0x97,0x1e,0x1f,0x6e,0x38);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2c073d84-b51c-48c9-aa9f-68971e1f6e38")
+IMPEG2ComponentType : public ILanguageComponentType
+{
+    virtual HRESULT STDMETHODCALLTYPE get_StreamType(
+        MPEG2StreamType *MP2StreamType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_StreamType(
+        MPEG2StreamType MP2StreamType) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2ComponentType, 0x2c073d84, 0xb51c, 0x48c9, 0xaa,0x9f, 0x68,0x97,0x1e,0x1f,0x6e,0x38)
+#endif
+#else
+typedef struct IMPEG2ComponentTypeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2ComponentType* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2ComponentType* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2ComponentType* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IMPEG2ComponentType* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IMPEG2ComponentType* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IMPEG2ComponentType* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IMPEG2ComponentType* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Category)(
+        IMPEG2ComponentType* This,
+        ComponentCategory *Category);
+
+    HRESULT (STDMETHODCALLTYPE *put_Category)(
+        IMPEG2ComponentType* This,
+        ComponentCategory Category);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
+        IMPEG2ComponentType* This,
+        BSTR *MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
+        IMPEG2ComponentType* This,
+        BSTR MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
+        IMPEG2ComponentType* This,
+        GUID *MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
+        IMPEG2ComponentType* This,
+        REFCLSID MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
+        IMPEG2ComponentType* This,
+        BSTR *MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
+        IMPEG2ComponentType* This,
+        BSTR MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
+        IMPEG2ComponentType* This,
+        GUID *MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
+        IMPEG2ComponentType* This,
+        REFCLSID MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
+        IMPEG2ComponentType* This,
+        BSTR *MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
+        IMPEG2ComponentType* This,
+        BSTR MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
+        IMPEG2ComponentType* This,
+        GUID *MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
+        IMPEG2ComponentType* This,
+        REFCLSID MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaType)(
+        IMPEG2ComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaType)(
+        IMPEG2ComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IMPEG2ComponentType* This,
+        IComponentType **NewCT);
+
+    /*** ILanguageComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_LangID)(
+        IMPEG2ComponentType* This,
+        LONG *LangID);
+
+    HRESULT (STDMETHODCALLTYPE *put_LangID)(
+        IMPEG2ComponentType* This,
+        LONG LangID);
+
+    /*** IMPEG2ComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_StreamType)(
+        IMPEG2ComponentType* This,
+        MPEG2StreamType *MP2StreamType);
+
+    HRESULT (STDMETHODCALLTYPE *put_StreamType)(
+        IMPEG2ComponentType* This,
+        MPEG2StreamType MP2StreamType);
+
+    END_INTERFACE
+} IMPEG2ComponentTypeVtbl;
+interface IMPEG2ComponentType {
+    CONST_VTBL IMPEG2ComponentTypeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2ComponentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2ComponentType_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2ComponentType_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IMPEG2ComponentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IMPEG2ComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IMPEG2ComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IMPEG2ComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentType methods ***/
+#define IMPEG2ComponentType_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
+#define IMPEG2ComponentType_put_Category(This,Category) (This)->lpVtbl->put_Category(This,Category)
+#define IMPEG2ComponentType_get_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,MediaMajorType)
+#define IMPEG2ComponentType_put_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put_MediaMajorType(This,MediaMajorType)
+#define IMPEG2ComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid)
+#define IMPEG2ComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid)
+#define IMPEG2ComponentType_get_MediaSubType(This,MediaSubType) (This)->lpVtbl->get_MediaSubType(This,MediaSubType)
+#define IMPEG2ComponentType_put_MediaSubType(This,MediaSubType) (This)->lpVtbl->put_MediaSubType(This,MediaSubType)
+#define IMPEG2ComponentType_get__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid)
+#define IMPEG2ComponentType_put__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid)
+#define IMPEG2ComponentType_get_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,MediaFormatType)
+#define IMPEG2ComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define IMPEG2ComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid)
+#define IMPEG2ComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid)
+#define IMPEG2ComponentType_get_MediaType(This,MediaType) (This)->lpVtbl->get_MediaType(This,MediaType)
+#define IMPEG2ComponentType_put_MediaType(This,MediaType) (This)->lpVtbl->put_MediaType(This,MediaType)
+#define IMPEG2ComponentType_Clone(This,NewCT) (This)->lpVtbl->Clone(This,NewCT)
+/*** ILanguageComponentType methods ***/
+#define IMPEG2ComponentType_get_LangID(This,LangID) (This)->lpVtbl->get_LangID(This,LangID)
+#define IMPEG2ComponentType_put_LangID(This,LangID) (This)->lpVtbl->put_LangID(This,LangID)
+/*** IMPEG2ComponentType methods ***/
+#define IMPEG2ComponentType_get_StreamType(This,MP2StreamType) (This)->lpVtbl->get_StreamType(This,MP2StreamType)
+#define IMPEG2ComponentType_put_StreamType(This,MP2StreamType) (This)->lpVtbl->put_StreamType(This,MP2StreamType)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2ComponentType_QueryInterface(IMPEG2ComponentType* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2ComponentType_AddRef(IMPEG2ComponentType* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2ComponentType_Release(IMPEG2ComponentType* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IMPEG2ComponentType_GetTypeInfoCount(IMPEG2ComponentType* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_GetTypeInfo(IMPEG2ComponentType* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_GetIDsOfNames(IMPEG2ComponentType* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_Invoke(IMPEG2ComponentType* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentType methods ***/
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_Category(IMPEG2ComponentType* This,ComponentCategory *Category) {
+    return This->lpVtbl->get_Category(This,Category);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_Category(IMPEG2ComponentType* This,ComponentCategory Category) {
+    return This->lpVtbl->put_Category(This,Category);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_MediaMajorType(IMPEG2ComponentType* This,BSTR *MediaMajorType) {
+    return This->lpVtbl->get_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_MediaMajorType(IMPEG2ComponentType* This,BSTR MediaMajorType) {
+    return This->lpVtbl->put_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get__MediaMajorType(IMPEG2ComponentType* This,GUID *MediaMajorTypeGuid) {
+    return This->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put__MediaMajorType(IMPEG2ComponentType* This,REFCLSID MediaMajorTypeGuid) {
+    return This->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_MediaSubType(IMPEG2ComponentType* This,BSTR *MediaSubType) {
+    return This->lpVtbl->get_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_MediaSubType(IMPEG2ComponentType* This,BSTR MediaSubType) {
+    return This->lpVtbl->put_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get__MediaSubType(IMPEG2ComponentType* This,GUID *MediaSubTypeGuid) {
+    return This->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put__MediaSubType(IMPEG2ComponentType* This,REFCLSID MediaSubTypeGuid) {
+    return This->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_MediaFormatType(IMPEG2ComponentType* This,BSTR *MediaFormatType) {
+    return This->lpVtbl->get_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_MediaFormatType(IMPEG2ComponentType* This,BSTR MediaFormatType) {
+    return This->lpVtbl->put_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get__MediaFormatType(IMPEG2ComponentType* This,GUID *MediaFormatTypeGuid) {
+    return This->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put__MediaFormatType(IMPEG2ComponentType* This,REFCLSID MediaFormatTypeGuid) {
+    return This->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_MediaType(IMPEG2ComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->get_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_MediaType(IMPEG2ComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->put_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_Clone(IMPEG2ComponentType* This,IComponentType **NewCT) {
+    return This->lpVtbl->Clone(This,NewCT);
+}
+/*** ILanguageComponentType methods ***/
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_LangID(IMPEG2ComponentType* This,LONG *LangID) {
+    return This->lpVtbl->get_LangID(This,LangID);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_LangID(IMPEG2ComponentType* This,LONG LangID) {
+    return This->lpVtbl->put_LangID(This,LangID);
+}
+/*** IMPEG2ComponentType methods ***/
+static FORCEINLINE HRESULT IMPEG2ComponentType_get_StreamType(IMPEG2ComponentType* This,MPEG2StreamType *MP2StreamType) {
+    return This->lpVtbl->get_StreamType(This,MP2StreamType);
+}
+static FORCEINLINE HRESULT IMPEG2ComponentType_put_StreamType(IMPEG2ComponentType* This,MPEG2StreamType MP2StreamType) {
+    return This->lpVtbl->put_StreamType(This,MP2StreamType);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_get_StreamType_Proxy(
+    IMPEG2ComponentType* This,
+    MPEG2StreamType *MP2StreamType);
+void __RPC_STUB IMPEG2ComponentType_get_StreamType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_put_StreamType_Proxy(
+    IMPEG2ComponentType* This,
+    MPEG2StreamType MP2StreamType);
+void __RPC_STUB IMPEG2ComponentType_put_StreamType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMPEG2ComponentType_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IATSCComponentType interface
+ */
+#ifndef __IATSCComponentType_INTERFACE_DEFINED__
+#define __IATSCComponentType_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IATSCComponentType, 0xfc189e4d, 0x7bd4, 0x4125, 0xb3,0xb3, 0x3a,0x76,0xa3,0x32,0xcc,0x96);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fc189e4d-7bd4-4125-b3b3-3a76a332cc96")
+IATSCComponentType : public IMPEG2ComponentType
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Flags(
+        LONG *Flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Flags(
+        LONG flags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IATSCComponentType, 0xfc189e4d, 0x7bd4, 0x4125, 0xb3,0xb3, 0x3a,0x76,0xa3,0x32,0xcc,0x96)
+#endif
+#else
+typedef struct IATSCComponentTypeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IATSCComponentType* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IATSCComponentType* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IATSCComponentType* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IATSCComponentType* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IATSCComponentType* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IATSCComponentType* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IATSCComponentType* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Category)(
+        IATSCComponentType* This,
+        ComponentCategory *Category);
+
+    HRESULT (STDMETHODCALLTYPE *put_Category)(
+        IATSCComponentType* This,
+        ComponentCategory Category);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
+        IATSCComponentType* This,
+        BSTR *MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
+        IATSCComponentType* This,
+        BSTR MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
+        IATSCComponentType* This,
+        GUID *MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
+        IATSCComponentType* This,
+        REFCLSID MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
+        IATSCComponentType* This,
+        BSTR *MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
+        IATSCComponentType* This,
+        BSTR MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
+        IATSCComponentType* This,
+        GUID *MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
+        IATSCComponentType* This,
+        REFCLSID MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
+        IATSCComponentType* This,
+        BSTR *MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
+        IATSCComponentType* This,
+        BSTR MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
+        IATSCComponentType* This,
+        GUID *MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
+        IATSCComponentType* This,
+        REFCLSID MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaType)(
+        IATSCComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaType)(
+        IATSCComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IATSCComponentType* This,
+        IComponentType **NewCT);
+
+    /*** ILanguageComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_LangID)(
+        IATSCComponentType* This,
+        LONG *LangID);
+
+    HRESULT (STDMETHODCALLTYPE *put_LangID)(
+        IATSCComponentType* This,
+        LONG LangID);
+
+    /*** IMPEG2ComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_StreamType)(
+        IATSCComponentType* This,
+        MPEG2StreamType *MP2StreamType);
+
+    HRESULT (STDMETHODCALLTYPE *put_StreamType)(
+        IATSCComponentType* This,
+        MPEG2StreamType MP2StreamType);
+
+    /*** IATSCComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Flags)(
+        IATSCComponentType* This,
+        LONG *Flags);
+
+    HRESULT (STDMETHODCALLTYPE *put_Flags)(
+        IATSCComponentType* This,
+        LONG flags);
+
+    END_INTERFACE
+} IATSCComponentTypeVtbl;
+interface IATSCComponentType {
+    CONST_VTBL IATSCComponentTypeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IATSCComponentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IATSCComponentType_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IATSCComponentType_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IATSCComponentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IATSCComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IATSCComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IATSCComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentType methods ***/
+#define IATSCComponentType_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
+#define IATSCComponentType_put_Category(This,Category) (This)->lpVtbl->put_Category(This,Category)
+#define IATSCComponentType_get_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,MediaMajorType)
+#define IATSCComponentType_put_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put_MediaMajorType(This,MediaMajorType)
+#define IATSCComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid)
+#define IATSCComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid)
+#define IATSCComponentType_get_MediaSubType(This,MediaSubType) (This)->lpVtbl->get_MediaSubType(This,MediaSubType)
+#define IATSCComponentType_put_MediaSubType(This,MediaSubType) (This)->lpVtbl->put_MediaSubType(This,MediaSubType)
+#define IATSCComponentType_get__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid)
+#define IATSCComponentType_put__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid)
+#define IATSCComponentType_get_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,MediaFormatType)
+#define IATSCComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define IATSCComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid)
+#define IATSCComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid)
+#define IATSCComponentType_get_MediaType(This,MediaType) (This)->lpVtbl->get_MediaType(This,MediaType)
+#define IATSCComponentType_put_MediaType(This,MediaType) (This)->lpVtbl->put_MediaType(This,MediaType)
+#define IATSCComponentType_Clone(This,NewCT) (This)->lpVtbl->Clone(This,NewCT)
+/*** ILanguageComponentType methods ***/
+#define IATSCComponentType_get_LangID(This,LangID) (This)->lpVtbl->get_LangID(This,LangID)
+#define IATSCComponentType_put_LangID(This,LangID) (This)->lpVtbl->put_LangID(This,LangID)
+/*** IMPEG2ComponentType methods ***/
+#define IATSCComponentType_get_StreamType(This,MP2StreamType) (This)->lpVtbl->get_StreamType(This,MP2StreamType)
+#define IATSCComponentType_put_StreamType(This,MP2StreamType) (This)->lpVtbl->put_StreamType(This,MP2StreamType)
+/*** IATSCComponentType methods ***/
+#define IATSCComponentType_get_Flags(This,Flags) (This)->lpVtbl->get_Flags(This,Flags)
+#define IATSCComponentType_put_Flags(This,flags) (This)->lpVtbl->put_Flags(This,flags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_QueryInterface(IATSCComponentType* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IATSCComponentType_AddRef(IATSCComponentType* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IATSCComponentType_Release(IATSCComponentType* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_GetTypeInfoCount(IATSCComponentType* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IATSCComponentType_GetTypeInfo(IATSCComponentType* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IATSCComponentType_GetIDsOfNames(IATSCComponentType* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IATSCComponentType_Invoke(IATSCComponentType* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentType methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_get_Category(IATSCComponentType* This,ComponentCategory *Category) {
+    return This->lpVtbl->get_Category(This,Category);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_Category(IATSCComponentType* This,ComponentCategory Category) {
+    return This->lpVtbl->put_Category(This,Category);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get_MediaMajorType(IATSCComponentType* This,BSTR *MediaMajorType) {
+    return This->lpVtbl->get_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_MediaMajorType(IATSCComponentType* This,BSTR MediaMajorType) {
+    return This->lpVtbl->put_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get__MediaMajorType(IATSCComponentType* This,GUID *MediaMajorTypeGuid) {
+    return This->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put__MediaMajorType(IATSCComponentType* This,REFCLSID MediaMajorTypeGuid) {
+    return This->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get_MediaSubType(IATSCComponentType* This,BSTR *MediaSubType) {
+    return This->lpVtbl->get_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_MediaSubType(IATSCComponentType* This,BSTR MediaSubType) {
+    return This->lpVtbl->put_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get__MediaSubType(IATSCComponentType* This,GUID *MediaSubTypeGuid) {
+    return This->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put__MediaSubType(IATSCComponentType* This,REFCLSID MediaSubTypeGuid) {
+    return This->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get_MediaFormatType(IATSCComponentType* This,BSTR *MediaFormatType) {
+    return This->lpVtbl->get_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_MediaFormatType(IATSCComponentType* This,BSTR MediaFormatType) {
+    return This->lpVtbl->put_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get__MediaFormatType(IATSCComponentType* This,GUID *MediaFormatTypeGuid) {
+    return This->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put__MediaFormatType(IATSCComponentType* This,REFCLSID MediaFormatTypeGuid) {
+    return This->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IATSCComponentType_get_MediaType(IATSCComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->get_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_MediaType(IATSCComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->put_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_Clone(IATSCComponentType* This,IComponentType **NewCT) {
+    return This->lpVtbl->Clone(This,NewCT);
+}
+/*** ILanguageComponentType methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_get_LangID(IATSCComponentType* This,LONG *LangID) {
+    return This->lpVtbl->get_LangID(This,LangID);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_LangID(IATSCComponentType* This,LONG LangID) {
+    return This->lpVtbl->put_LangID(This,LangID);
+}
+/*** IMPEG2ComponentType methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_get_StreamType(IATSCComponentType* This,MPEG2StreamType *MP2StreamType) {
+    return This->lpVtbl->get_StreamType(This,MP2StreamType);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_StreamType(IATSCComponentType* This,MPEG2StreamType MP2StreamType) {
+    return This->lpVtbl->put_StreamType(This,MP2StreamType);
+}
+/*** IATSCComponentType methods ***/
+static FORCEINLINE HRESULT IATSCComponentType_get_Flags(IATSCComponentType* This,LONG *Flags) {
+    return This->lpVtbl->get_Flags(This,Flags);
+}
+static FORCEINLINE HRESULT IATSCComponentType_put_Flags(IATSCComponentType* This,LONG flags) {
+    return This->lpVtbl->put_Flags(This,flags);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IATSCComponentType_get_Flags_Proxy(
+    IATSCComponentType* This,
+    LONG *Flags);
+void __RPC_STUB IATSCComponentType_get_Flags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCComponentType_put_Flags_Proxy(
+    IATSCComponentType* This,
+    LONG flags);
+void __RPC_STUB IATSCComponentType_put_Flags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IATSCComponentType_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumComponentTypes interface
+ */
+#ifndef __IEnumComponentTypes_INTERFACE_DEFINED__
+#define __IEnumComponentTypes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumComponentTypes, 0x8a674b4a, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8a674b4a-1f63-11d3-b64c-00c04f79498e")
+IEnumComponentTypes : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        IComponentType **rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumComponentTypes **ppEnum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumComponentTypes, 0x8a674b4a, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IEnumComponentTypesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumComponentTypes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumComponentTypes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumComponentTypes* This);
+
+    /*** IEnumComponentTypes methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumComponentTypes* This,
+        ULONG celt,
+        IComponentType **rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumComponentTypes* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumComponentTypes* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumComponentTypes* This,
+        IEnumComponentTypes **ppEnum);
+
+    END_INTERFACE
+} IEnumComponentTypesVtbl;
+interface IEnumComponentTypes {
+    CONST_VTBL IEnumComponentTypesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IEnumComponentTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IEnumComponentTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IEnumComponentTypes_Release(This) (This)->lpVtbl->Release(This)
-#define IEnumComponentTypes_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
-#define IEnumComponentTypes_Next(This,celt,pprgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,pprgelt,pceltFetched)
-#define IEnumComponentTypes_Reset() (This)->lpVtbl->Reset(This)
+/*** IEnumComponentTypes methods ***/
+#define IEnumComponentTypes_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
 #define IEnumComponentTypes_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
-#endif /*COBJMACROS*/
+#define IEnumComponentTypes_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumComponentTypes_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumComponentTypes_QueryInterface(IEnumComponentTypes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumComponentTypes_AddRef(IEnumComponentTypes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumComponentTypes_Release(IEnumComponentTypes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumComponentTypes methods ***/
+static FORCEINLINE HRESULT IEnumComponentTypes_Next(IEnumComponentTypes* This,ULONG celt,IComponentType **rgelt,ULONG *pceltFetched) {
+    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumComponentTypes_Skip(IEnumComponentTypes* This,ULONG celt) {
+    return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumComponentTypes_Reset(IEnumComponentTypes* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumComponentTypes_Clone(IEnumComponentTypes* This,IEnumComponentTypes **ppEnum) {
+    return This->lpVtbl->Clone(This,ppEnum);
+}
+#endif
+#endif
 
-#endif /*__INC_TUNER__*/
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Next_Proxy(
+    IEnumComponentTypes* This,
+    ULONG celt,
+    IComponentType **rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumComponentTypes_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Skip_Proxy(
+    IEnumComponentTypes* This,
+    ULONG celt);
+void __RPC_STUB IEnumComponentTypes_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Reset_Proxy(
+    IEnumComponentTypes* This);
+void __RPC_STUB IEnumComponentTypes_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Clone_Proxy(
+    IEnumComponentTypes* This,
+    IEnumComponentTypes **ppEnum);
+void __RPC_STUB IEnumComponentTypes_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumComponentTypes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IComponentTypes interface
+ */
+#ifndef __IComponentTypes_INTERFACE_DEFINED__
+#define __IComponentTypes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComponentTypes, 0x0dc13d4a, 0x0313, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0dc13d4a-0313-11d3-9d8e-00c04f72d980")
+IComponentTypes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IEnumVARIANT **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumComponentTypes(
+        IEnumComponentTypes **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        VARIANT Index,
+        IComponentType **ComponentType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Item(
+        VARIANT Index,
+        IComponentType *ComponentType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IComponentType *ComponentType,
+        VARIANT *NewIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IComponentTypes **NewList) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IComponentTypes, 0x0dc13d4a, 0x0313, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IComponentTypesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComponentTypes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComponentTypes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComponentTypes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IComponentTypes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IComponentTypes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IComponentTypes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IComponentTypes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentTypes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IComponentTypes* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IComponentTypes* This,
+        IEnumVARIANT **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumComponentTypes)(
+        IComponentTypes* This,
+        IEnumComponentTypes **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        IComponentTypes* This,
+        VARIANT Index,
+        IComponentType **ComponentType);
+
+    HRESULT (STDMETHODCALLTYPE *put_Item)(
+        IComponentTypes* This,
+        VARIANT Index,
+        IComponentType *ComponentType);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IComponentTypes* This,
+        IComponentType *ComponentType,
+        VARIANT *NewIndex);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IComponentTypes* This,
+        VARIANT Index);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IComponentTypes* This,
+        IComponentTypes **NewList);
+
+    END_INTERFACE
+} IComponentTypesVtbl;
+interface IComponentTypes {
+    CONST_VTBL IComponentTypesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IComponentTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IComponentTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IComponentTypes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IComponentTypes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IComponentTypes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IComponentTypes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IComponentTypes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentTypes methods ***/
+#define IComponentTypes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IComponentTypes_get__NewEnum(This,ppNewEnum) (This)->lpVtbl->get__NewEnum(This,ppNewEnum)
+#define IComponentTypes_EnumComponentTypes(This,ppNewEnum) (This)->lpVtbl->EnumComponentTypes(This,ppNewEnum)
+#define IComponentTypes_get_Item(This,Index,ComponentType) (This)->lpVtbl->get_Item(This,Index,ComponentType)
+#define IComponentTypes_put_Item(This,Index,ComponentType) (This)->lpVtbl->put_Item(This,Index,ComponentType)
+#define IComponentTypes_Add(This,ComponentType,NewIndex) (This)->lpVtbl->Add(This,ComponentType,NewIndex)
+#define IComponentTypes_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
+#define IComponentTypes_Clone(This,NewList) (This)->lpVtbl->Clone(This,NewList)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IComponentTypes_QueryInterface(IComponentTypes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IComponentTypes_AddRef(IComponentTypes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IComponentTypes_Release(IComponentTypes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IComponentTypes_GetTypeInfoCount(IComponentTypes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IComponentTypes_GetTypeInfo(IComponentTypes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IComponentTypes_GetIDsOfNames(IComponentTypes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IComponentTypes_Invoke(IComponentTypes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentTypes methods ***/
+static FORCEINLINE HRESULT IComponentTypes_get_Count(IComponentTypes* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IComponentTypes_get__NewEnum(IComponentTypes* This,IEnumVARIANT **ppNewEnum) {
+    return This->lpVtbl->get__NewEnum(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponentTypes_EnumComponentTypes(IComponentTypes* This,IEnumComponentTypes **ppNewEnum) {
+    return This->lpVtbl->EnumComponentTypes(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponentTypes_get_Item(IComponentTypes* This,VARIANT Index,IComponentType **ComponentType) {
+    return This->lpVtbl->get_Item(This,Index,ComponentType);
+}
+static FORCEINLINE HRESULT IComponentTypes_put_Item(IComponentTypes* This,VARIANT Index,IComponentType *ComponentType) {
+    return This->lpVtbl->put_Item(This,Index,ComponentType);
+}
+static FORCEINLINE HRESULT IComponentTypes_Add(IComponentTypes* This,IComponentType *ComponentType,VARIANT *NewIndex) {
+    return This->lpVtbl->Add(This,ComponentType,NewIndex);
+}
+static FORCEINLINE HRESULT IComponentTypes_Remove(IComponentTypes* This,VARIANT Index) {
+    return This->lpVtbl->Remove(This,Index);
+}
+static FORCEINLINE HRESULT IComponentTypes_Clone(IComponentTypes* This,IComponentTypes **NewList) {
+    return This->lpVtbl->Clone(This,NewList);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComponentTypes_get_Count_Proxy(
+    IComponentTypes* This,
+    LONG *Count);
+void __RPC_STUB IComponentTypes_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_get__NewEnum_Proxy(
+    IComponentTypes* This,
+    IEnumVARIANT **ppNewEnum);
+void __RPC_STUB IComponentTypes_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_EnumComponentTypes_Proxy(
+    IComponentTypes* This,
+    IEnumComponentTypes **ppNewEnum);
+void __RPC_STUB IComponentTypes_EnumComponentTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_get_Item_Proxy(
+    IComponentTypes* This,
+    VARIANT Index,
+    IComponentType **ComponentType);
+void __RPC_STUB IComponentTypes_get_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_put_Item_Proxy(
+    IComponentTypes* This,
+    VARIANT Index,
+    IComponentType *ComponentType);
+void __RPC_STUB IComponentTypes_put_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_Add_Proxy(
+    IComponentTypes* This,
+    IComponentType *ComponentType,
+    VARIANT *NewIndex);
+void __RPC_STUB IComponentTypes_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_Remove_Proxy(
+    IComponentTypes* This,
+    VARIANT Index);
+void __RPC_STUB IComponentTypes_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentTypes_Clone_Proxy(
+    IComponentTypes* This,
+    IComponentTypes **NewList);
+void __RPC_STUB IComponentTypes_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComponentTypes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IComponent interface
+ */
+#ifndef __IComponent_INTERFACE_DEFINED__
+#define __IComponent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComponent, 0x1a5576fc, 0x0e19, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1a5576fc-0e19-11d3-9d8e-00c04f72d980")
+IComponent : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        IComponentType **CT) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Type(
+        IComponentType *CT) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DescLangID(
+        LONG *LangID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DescLangID(
+        LONG LangID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Status(
+        ComponentStatus *Status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Status(
+        ComponentStatus Status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Description(
+        BSTR *Description) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Description(
+        BSTR Description) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IComponent **NewComponent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IComponent, 0x1a5576fc, 0x0e19, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IComponentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComponent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComponent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComponent* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IComponent* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IComponent* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IComponent* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IComponent* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponent methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IComponent* This,
+        IComponentType **CT);
+
+    HRESULT (STDMETHODCALLTYPE *put_Type)(
+        IComponent* This,
+        IComponentType *CT);
+
+    HRESULT (STDMETHODCALLTYPE *get_DescLangID)(
+        IComponent* This,
+        LONG *LangID);
+
+    HRESULT (STDMETHODCALLTYPE *put_DescLangID)(
+        IComponent* This,
+        LONG LangID);
+
+    HRESULT (STDMETHODCALLTYPE *get_Status)(
+        IComponent* This,
+        ComponentStatus *Status);
+
+    HRESULT (STDMETHODCALLTYPE *put_Status)(
+        IComponent* This,
+        ComponentStatus Status);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IComponent* This,
+        BSTR *Description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IComponent* This,
+        BSTR Description);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IComponent* This,
+        IComponent **NewComponent);
+
+    END_INTERFACE
+} IComponentVtbl;
+interface IComponent {
+    CONST_VTBL IComponentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IComponent_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IComponent_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IComponent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IComponent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IComponent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponent methods ***/
+#define IComponent_get_Type(This,CT) (This)->lpVtbl->get_Type(This,CT)
+#define IComponent_put_Type(This,CT) (This)->lpVtbl->put_Type(This,CT)
+#define IComponent_get_DescLangID(This,LangID) (This)->lpVtbl->get_DescLangID(This,LangID)
+#define IComponent_put_DescLangID(This,LangID) (This)->lpVtbl->put_DescLangID(This,LangID)
+#define IComponent_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
+#define IComponent_put_Status(This,Status) (This)->lpVtbl->put_Status(This,Status)
+#define IComponent_get_Description(This,Description) (This)->lpVtbl->get_Description(This,Description)
+#define IComponent_put_Description(This,Description) (This)->lpVtbl->put_Description(This,Description)
+#define IComponent_Clone(This,NewComponent) (This)->lpVtbl->Clone(This,NewComponent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IComponent_QueryInterface(IComponent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IComponent_AddRef(IComponent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IComponent_Release(IComponent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IComponent_GetTypeInfoCount(IComponent* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IComponent_GetTypeInfo(IComponent* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IComponent_GetIDsOfNames(IComponent* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IComponent_Invoke(IComponent* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponent methods ***/
+static FORCEINLINE HRESULT IComponent_get_Type(IComponent* This,IComponentType **CT) {
+    return This->lpVtbl->get_Type(This,CT);
+}
+static FORCEINLINE HRESULT IComponent_put_Type(IComponent* This,IComponentType *CT) {
+    return This->lpVtbl->put_Type(This,CT);
+}
+static FORCEINLINE HRESULT IComponent_get_DescLangID(IComponent* This,LONG *LangID) {
+    return This->lpVtbl->get_DescLangID(This,LangID);
+}
+static FORCEINLINE HRESULT IComponent_put_DescLangID(IComponent* This,LONG LangID) {
+    return This->lpVtbl->put_DescLangID(This,LangID);
+}
+static FORCEINLINE HRESULT IComponent_get_Status(IComponent* This,ComponentStatus *Status) {
+    return This->lpVtbl->get_Status(This,Status);
+}
+static FORCEINLINE HRESULT IComponent_put_Status(IComponent* This,ComponentStatus Status) {
+    return This->lpVtbl->put_Status(This,Status);
+}
+static FORCEINLINE HRESULT IComponent_get_Description(IComponent* This,BSTR *Description) {
+    return This->lpVtbl->get_Description(This,Description);
+}
+static FORCEINLINE HRESULT IComponent_put_Description(IComponent* This,BSTR Description) {
+    return This->lpVtbl->put_Description(This,Description);
+}
+static FORCEINLINE HRESULT IComponent_Clone(IComponent* This,IComponent **NewComponent) {
+    return This->lpVtbl->Clone(This,NewComponent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComponent_get_Type_Proxy(
+    IComponent* This,
+    IComponentType **CT);
+void __RPC_STUB IComponent_get_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_put_Type_Proxy(
+    IComponent* This,
+    IComponentType *CT);
+void __RPC_STUB IComponent_put_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_get_DescLangID_Proxy(
+    IComponent* This,
+    LONG *LangID);
+void __RPC_STUB IComponent_get_DescLangID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_put_DescLangID_Proxy(
+    IComponent* This,
+    LONG LangID);
+void __RPC_STUB IComponent_put_DescLangID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_get_Status_Proxy(
+    IComponent* This,
+    ComponentStatus *Status);
+void __RPC_STUB IComponent_get_Status_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_put_Status_Proxy(
+    IComponent* This,
+    ComponentStatus Status);
+void __RPC_STUB IComponent_put_Status_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_get_Description_Proxy(
+    IComponent* This,
+    BSTR *Description);
+void __RPC_STUB IComponent_get_Description_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_put_Description_Proxy(
+    IComponent* This,
+    BSTR Description);
+void __RPC_STUB IComponent_put_Description_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponent_Clone_Proxy(
+    IComponent* This,
+    IComponent **NewComponent);
+void __RPC_STUB IComponent_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComponent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAnalogAudioComponentType interface
+ */
+#ifndef __IAnalogAudioComponentType_INTERFACE_DEFINED__
+#define __IAnalogAudioComponentType_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAnalogAudioComponentType, 0x2cfeb2a8, 0x1787, 0x4a24, 0xa9,0x41, 0xc6,0xea,0xec,0x39,0xc8,0x42);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2cfeb2a8-1787-4a24-a941-c6eaec39c842")
+IAnalogAudioComponentType : public IComponentType
+{
+    virtual HRESULT STDMETHODCALLTYPE get_AnalogAudioMode(
+        TVAudioMode *Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AnalogAudioMode(
+        TVAudioMode Mode) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAnalogAudioComponentType, 0x2cfeb2a8, 0x1787, 0x4a24, 0xa9,0x41, 0xc6,0xea,0xec,0x39,0xc8,0x42)
+#endif
+#else
+typedef struct IAnalogAudioComponentTypeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAnalogAudioComponentType* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAnalogAudioComponentType* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAnalogAudioComponentType* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAnalogAudioComponentType* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAnalogAudioComponentType* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAnalogAudioComponentType* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAnalogAudioComponentType* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Category)(
+        IAnalogAudioComponentType* This,
+        ComponentCategory *Category);
+
+    HRESULT (STDMETHODCALLTYPE *put_Category)(
+        IAnalogAudioComponentType* This,
+        ComponentCategory Category);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
+        IAnalogAudioComponentType* This,
+        BSTR *MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
+        IAnalogAudioComponentType* This,
+        BSTR MediaMajorType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
+        IAnalogAudioComponentType* This,
+        GUID *MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
+        IAnalogAudioComponentType* This,
+        REFCLSID MediaMajorTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
+        IAnalogAudioComponentType* This,
+        BSTR *MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
+        IAnalogAudioComponentType* This,
+        BSTR MediaSubType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
+        IAnalogAudioComponentType* This,
+        GUID *MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
+        IAnalogAudioComponentType* This,
+        REFCLSID MediaSubTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
+        IAnalogAudioComponentType* This,
+        BSTR *MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
+        IAnalogAudioComponentType* This,
+        BSTR MediaFormatType);
+
+    HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
+        IAnalogAudioComponentType* This,
+        GUID *MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
+        IAnalogAudioComponentType* This,
+        REFCLSID MediaFormatTypeGuid);
+
+    HRESULT (STDMETHODCALLTYPE *get_MediaType)(
+        IAnalogAudioComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *put_MediaType)(
+        IAnalogAudioComponentType* This,
+        AM_MEDIA_TYPE *MediaType);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAnalogAudioComponentType* This,
+        IComponentType **NewCT);
+
+    /*** IAnalogAudioComponentType methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_AnalogAudioMode)(
+        IAnalogAudioComponentType* This,
+        TVAudioMode *Mode);
+
+    HRESULT (STDMETHODCALLTYPE *put_AnalogAudioMode)(
+        IAnalogAudioComponentType* This,
+        TVAudioMode Mode);
+
+    END_INTERFACE
+} IAnalogAudioComponentTypeVtbl;
+interface IAnalogAudioComponentType {
+    CONST_VTBL IAnalogAudioComponentTypeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAnalogAudioComponentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAnalogAudioComponentType_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAnalogAudioComponentType_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAnalogAudioComponentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAnalogAudioComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAnalogAudioComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAnalogAudioComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentType methods ***/
+#define IAnalogAudioComponentType_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
+#define IAnalogAudioComponentType_put_Category(This,Category) (This)->lpVtbl->put_Category(This,Category)
+#define IAnalogAudioComponentType_get_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->get_MediaMajorType(This,MediaMajorType)
+#define IAnalogAudioComponentType_put_MediaMajorType(This,MediaMajorType) (This)->lpVtbl->put_MediaMajorType(This,MediaMajorType)
+#define IAnalogAudioComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid)
+#define IAnalogAudioComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) (This)->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid)
+#define IAnalogAudioComponentType_get_MediaSubType(This,MediaSubType) (This)->lpVtbl->get_MediaSubType(This,MediaSubType)
+#define IAnalogAudioComponentType_put_MediaSubType(This,MediaSubType) (This)->lpVtbl->put_MediaSubType(This,MediaSubType)
+#define IAnalogAudioComponentType_get__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid)
+#define IAnalogAudioComponentType_put__MediaSubType(This,MediaSubTypeGuid) (This)->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid)
+#define IAnalogAudioComponentType_get_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->get_MediaFormatType(This,MediaFormatType)
+#define IAnalogAudioComponentType_put_MediaFormatType(This,MediaFormatType) (This)->lpVtbl->put_MediaFormatType(This,MediaFormatType)
+#define IAnalogAudioComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid)
+#define IAnalogAudioComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) (This)->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid)
+#define IAnalogAudioComponentType_get_MediaType(This,MediaType) (This)->lpVtbl->get_MediaType(This,MediaType)
+#define IAnalogAudioComponentType_put_MediaType(This,MediaType) (This)->lpVtbl->put_MediaType(This,MediaType)
+#define IAnalogAudioComponentType_Clone(This,NewCT) (This)->lpVtbl->Clone(This,NewCT)
+/*** IAnalogAudioComponentType methods ***/
+#define IAnalogAudioComponentType_get_AnalogAudioMode(This,Mode) (This)->lpVtbl->get_AnalogAudioMode(This,Mode)
+#define IAnalogAudioComponentType_put_AnalogAudioMode(This,Mode) (This)->lpVtbl->put_AnalogAudioMode(This,Mode)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAnalogAudioComponentType_QueryInterface(IAnalogAudioComponentType* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAnalogAudioComponentType_AddRef(IAnalogAudioComponentType* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAnalogAudioComponentType_Release(IAnalogAudioComponentType* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAnalogAudioComponentType_GetTypeInfoCount(IAnalogAudioComponentType* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_GetTypeInfo(IAnalogAudioComponentType* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_GetIDsOfNames(IAnalogAudioComponentType* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_Invoke(IAnalogAudioComponentType* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentType methods ***/
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_Category(IAnalogAudioComponentType* This,ComponentCategory *Category) {
+    return This->lpVtbl->get_Category(This,Category);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_Category(IAnalogAudioComponentType* This,ComponentCategory Category) {
+    return This->lpVtbl->put_Category(This,Category);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_MediaMajorType(IAnalogAudioComponentType* This,BSTR *MediaMajorType) {
+    return This->lpVtbl->get_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_MediaMajorType(IAnalogAudioComponentType* This,BSTR MediaMajorType) {
+    return This->lpVtbl->put_MediaMajorType(This,MediaMajorType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get__MediaMajorType(IAnalogAudioComponentType* This,GUID *MediaMajorTypeGuid) {
+    return This->lpVtbl->get__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put__MediaMajorType(IAnalogAudioComponentType* This,REFCLSID MediaMajorTypeGuid) {
+    return This->lpVtbl->put__MediaMajorType(This,MediaMajorTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_MediaSubType(IAnalogAudioComponentType* This,BSTR *MediaSubType) {
+    return This->lpVtbl->get_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_MediaSubType(IAnalogAudioComponentType* This,BSTR MediaSubType) {
+    return This->lpVtbl->put_MediaSubType(This,MediaSubType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get__MediaSubType(IAnalogAudioComponentType* This,GUID *MediaSubTypeGuid) {
+    return This->lpVtbl->get__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put__MediaSubType(IAnalogAudioComponentType* This,REFCLSID MediaSubTypeGuid) {
+    return This->lpVtbl->put__MediaSubType(This,MediaSubTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_MediaFormatType(IAnalogAudioComponentType* This,BSTR *MediaFormatType) {
+    return This->lpVtbl->get_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_MediaFormatType(IAnalogAudioComponentType* This,BSTR MediaFormatType) {
+    return This->lpVtbl->put_MediaFormatType(This,MediaFormatType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get__MediaFormatType(IAnalogAudioComponentType* This,GUID *MediaFormatTypeGuid) {
+    return This->lpVtbl->get__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put__MediaFormatType(IAnalogAudioComponentType* This,REFCLSID MediaFormatTypeGuid) {
+    return This->lpVtbl->put__MediaFormatType(This,MediaFormatTypeGuid);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_MediaType(IAnalogAudioComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->get_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_MediaType(IAnalogAudioComponentType* This,AM_MEDIA_TYPE *MediaType) {
+    return This->lpVtbl->put_MediaType(This,MediaType);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_Clone(IAnalogAudioComponentType* This,IComponentType **NewCT) {
+    return This->lpVtbl->Clone(This,NewCT);
+}
+/*** IAnalogAudioComponentType methods ***/
+static FORCEINLINE HRESULT IAnalogAudioComponentType_get_AnalogAudioMode(IAnalogAudioComponentType* This,TVAudioMode *Mode) {
+    return This->lpVtbl->get_AnalogAudioMode(This,Mode);
+}
+static FORCEINLINE HRESULT IAnalogAudioComponentType_put_AnalogAudioMode(IAnalogAudioComponentType* This,TVAudioMode Mode) {
+    return This->lpVtbl->put_AnalogAudioMode(This,Mode);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAnalogAudioComponentType_get_AnalogAudioMode_Proxy(
+    IAnalogAudioComponentType* This,
+    TVAudioMode *Mode);
+void __RPC_STUB IAnalogAudioComponentType_get_AnalogAudioMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogAudioComponentType_put_AnalogAudioMode_Proxy(
+    IAnalogAudioComponentType* This,
+    TVAudioMode Mode);
+void __RPC_STUB IAnalogAudioComponentType_put_AnalogAudioMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAnalogAudioComponentType_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMPEG2Component interface
+ */
+#ifndef __IMPEG2Component_INTERFACE_DEFINED__
+#define __IMPEG2Component_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMPEG2Component, 0x1493e353, 0x1eb6, 0x473c, 0x80,0x2d, 0x8e,0x6b,0x8e,0xc9,0xd2,0xa9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1493e353-1eb6-473c-802d-8e6b8ec9d2a9")
+IMPEG2Component : public IComponent
+{
+    virtual HRESULT STDMETHODCALLTYPE get_PID(
+        LONG *PID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PID(
+        LONG PID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PCRPID(
+        LONG *PCRPID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PCRPID(
+        LONG PCRPID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ProgramNumber(
+        LONG *ProgramNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ProgramNumber(
+        LONG ProgramNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMPEG2Component, 0x1493e353, 0x1eb6, 0x473c, 0x80,0x2d, 0x8e,0x6b,0x8e,0xc9,0xd2,0xa9)
+#endif
+#else
+typedef struct IMPEG2ComponentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMPEG2Component* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMPEG2Component* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMPEG2Component* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IMPEG2Component* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IMPEG2Component* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IMPEG2Component* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IMPEG2Component* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponent methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IMPEG2Component* This,
+        IComponentType **CT);
+
+    HRESULT (STDMETHODCALLTYPE *put_Type)(
+        IMPEG2Component* This,
+        IComponentType *CT);
+
+    HRESULT (STDMETHODCALLTYPE *get_DescLangID)(
+        IMPEG2Component* This,
+        LONG *LangID);
+
+    HRESULT (STDMETHODCALLTYPE *put_DescLangID)(
+        IMPEG2Component* This,
+        LONG LangID);
+
+    HRESULT (STDMETHODCALLTYPE *get_Status)(
+        IMPEG2Component* This,
+        ComponentStatus *Status);
+
+    HRESULT (STDMETHODCALLTYPE *put_Status)(
+        IMPEG2Component* This,
+        ComponentStatus Status);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IMPEG2Component* This,
+        BSTR *Description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IMPEG2Component* This,
+        BSTR Description);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IMPEG2Component* This,
+        IComponent **NewComponent);
+
+    /*** IMPEG2Component methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PID)(
+        IMPEG2Component* This,
+        LONG *PID);
+
+    HRESULT (STDMETHODCALLTYPE *put_PID)(
+        IMPEG2Component* This,
+        LONG PID);
+
+    HRESULT (STDMETHODCALLTYPE *get_PCRPID)(
+        IMPEG2Component* This,
+        LONG *PCRPID);
+
+    HRESULT (STDMETHODCALLTYPE *put_PCRPID)(
+        IMPEG2Component* This,
+        LONG PCRPID);
+
+    HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
+        IMPEG2Component* This,
+        LONG *ProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
+        IMPEG2Component* This,
+        LONG ProgramNumber);
+
+    END_INTERFACE
+} IMPEG2ComponentVtbl;
+interface IMPEG2Component {
+    CONST_VTBL IMPEG2ComponentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMPEG2Component_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMPEG2Component_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMPEG2Component_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IMPEG2Component_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IMPEG2Component_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IMPEG2Component_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IMPEG2Component_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponent methods ***/
+#define IMPEG2Component_get_Type(This,CT) (This)->lpVtbl->get_Type(This,CT)
+#define IMPEG2Component_put_Type(This,CT) (This)->lpVtbl->put_Type(This,CT)
+#define IMPEG2Component_get_DescLangID(This,LangID) (This)->lpVtbl->get_DescLangID(This,LangID)
+#define IMPEG2Component_put_DescLangID(This,LangID) (This)->lpVtbl->put_DescLangID(This,LangID)
+#define IMPEG2Component_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
+#define IMPEG2Component_put_Status(This,Status) (This)->lpVtbl->put_Status(This,Status)
+#define IMPEG2Component_get_Description(This,Description) (This)->lpVtbl->get_Description(This,Description)
+#define IMPEG2Component_put_Description(This,Description) (This)->lpVtbl->put_Description(This,Description)
+#define IMPEG2Component_Clone(This,NewComponent) (This)->lpVtbl->Clone(This,NewComponent)
+/*** IMPEG2Component methods ***/
+#define IMPEG2Component_get_PID(This,PID) (This)->lpVtbl->get_PID(This,PID)
+#define IMPEG2Component_put_PID(This,PID) (This)->lpVtbl->put_PID(This,PID)
+#define IMPEG2Component_get_PCRPID(This,PCRPID) (This)->lpVtbl->get_PCRPID(This,PCRPID)
+#define IMPEG2Component_put_PCRPID(This,PCRPID) (This)->lpVtbl->put_PCRPID(This,PCRPID)
+#define IMPEG2Component_get_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->get_ProgramNumber(This,ProgramNumber)
+#define IMPEG2Component_put_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->put_ProgramNumber(This,ProgramNumber)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMPEG2Component_QueryInterface(IMPEG2Component* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMPEG2Component_AddRef(IMPEG2Component* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMPEG2Component_Release(IMPEG2Component* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IMPEG2Component_GetTypeInfoCount(IMPEG2Component* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IMPEG2Component_GetTypeInfo(IMPEG2Component* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IMPEG2Component_GetIDsOfNames(IMPEG2Component* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IMPEG2Component_Invoke(IMPEG2Component* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponent methods ***/
+static FORCEINLINE HRESULT IMPEG2Component_get_Type(IMPEG2Component* This,IComponentType **CT) {
+    return This->lpVtbl->get_Type(This,CT);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_Type(IMPEG2Component* This,IComponentType *CT) {
+    return This->lpVtbl->put_Type(This,CT);
+}
+static FORCEINLINE HRESULT IMPEG2Component_get_DescLangID(IMPEG2Component* This,LONG *LangID) {
+    return This->lpVtbl->get_DescLangID(This,LangID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_DescLangID(IMPEG2Component* This,LONG LangID) {
+    return This->lpVtbl->put_DescLangID(This,LangID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_get_Status(IMPEG2Component* This,ComponentStatus *Status) {
+    return This->lpVtbl->get_Status(This,Status);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_Status(IMPEG2Component* This,ComponentStatus Status) {
+    return This->lpVtbl->put_Status(This,Status);
+}
+static FORCEINLINE HRESULT IMPEG2Component_get_Description(IMPEG2Component* This,BSTR *Description) {
+    return This->lpVtbl->get_Description(This,Description);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_Description(IMPEG2Component* This,BSTR Description) {
+    return This->lpVtbl->put_Description(This,Description);
+}
+static FORCEINLINE HRESULT IMPEG2Component_Clone(IMPEG2Component* This,IComponent **NewComponent) {
+    return This->lpVtbl->Clone(This,NewComponent);
+}
+/*** IMPEG2Component methods ***/
+static FORCEINLINE HRESULT IMPEG2Component_get_PID(IMPEG2Component* This,LONG *PID) {
+    return This->lpVtbl->get_PID(This,PID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_PID(IMPEG2Component* This,LONG PID) {
+    return This->lpVtbl->put_PID(This,PID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_get_PCRPID(IMPEG2Component* This,LONG *PCRPID) {
+    return This->lpVtbl->get_PCRPID(This,PCRPID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_PCRPID(IMPEG2Component* This,LONG PCRPID) {
+    return This->lpVtbl->put_PCRPID(This,PCRPID);
+}
+static FORCEINLINE HRESULT IMPEG2Component_get_ProgramNumber(IMPEG2Component* This,LONG *ProgramNumber) {
+    return This->lpVtbl->get_ProgramNumber(This,ProgramNumber);
+}
+static FORCEINLINE HRESULT IMPEG2Component_put_ProgramNumber(IMPEG2Component* This,LONG ProgramNumber) {
+    return This->lpVtbl->put_ProgramNumber(This,ProgramNumber);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PID_Proxy(
+    IMPEG2Component* This,
+    LONG *PID);
+void __RPC_STUB IMPEG2Component_get_PID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PID_Proxy(
+    IMPEG2Component* This,
+    LONG PID);
+void __RPC_STUB IMPEG2Component_put_PID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PCRPID_Proxy(
+    IMPEG2Component* This,
+    LONG *PCRPID);
+void __RPC_STUB IMPEG2Component_get_PCRPID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PCRPID_Proxy(
+    IMPEG2Component* This,
+    LONG PCRPID);
+void __RPC_STUB IMPEG2Component_put_PCRPID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2Component_get_ProgramNumber_Proxy(
+    IMPEG2Component* This,
+    LONG *ProgramNumber);
+void __RPC_STUB IMPEG2Component_get_ProgramNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMPEG2Component_put_ProgramNumber_Proxy(
+    IMPEG2Component* This,
+    LONG ProgramNumber);
+void __RPC_STUB IMPEG2Component_put_ProgramNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMPEG2Component_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumComponents interface
+ */
+#ifndef __IEnumComponents_INTERFACE_DEFINED__
+#define __IEnumComponents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumComponents, 0x2a6e2939, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2a6e2939-2595-11d3-b64c-00c04f79498e")
+IEnumComponents : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        IComponent **rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumComponents **ppEnum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumComponents, 0x2a6e2939, 0x2595, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#else
+typedef struct IEnumComponentsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumComponents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumComponents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumComponents* This);
+
+    /*** IEnumComponents methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumComponents* This,
+        ULONG celt,
+        IComponent **rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumComponents* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumComponents* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumComponents* This,
+        IEnumComponents **ppEnum);
+
+    END_INTERFACE
+} IEnumComponentsVtbl;
+interface IEnumComponents {
+    CONST_VTBL IEnumComponentsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IEnumComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumComponents_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumComponents methods ***/
+#define IEnumComponents_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumComponents_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumComponents_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumComponents_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumComponents_QueryInterface(IEnumComponents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumComponents_AddRef(IEnumComponents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumComponents_Release(IEnumComponents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumComponents methods ***/
+static FORCEINLINE HRESULT IEnumComponents_Next(IEnumComponents* This,ULONG celt,IComponent **rgelt,ULONG *pceltFetched) {
+    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumComponents_Skip(IEnumComponents* This,ULONG celt) {
+    return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumComponents_Reset(IEnumComponents* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumComponents_Clone(IEnumComponents* This,IEnumComponents **ppEnum) {
+    return This->lpVtbl->Clone(This,ppEnum);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumComponents_Next_Proxy(
+    IEnumComponents* This,
+    ULONG celt,
+    IComponent **rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumComponents_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponents_Skip_Proxy(
+    IEnumComponents* This,
+    ULONG celt);
+void __RPC_STUB IEnumComponents_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponents_Reset_Proxy(
+    IEnumComponents* This);
+void __RPC_STUB IEnumComponents_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumComponents_Clone_Proxy(
+    IEnumComponents* This,
+    IEnumComponents **ppEnum);
+void __RPC_STUB IEnumComponents_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumComponents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IComponents interface
+ */
+#ifndef __IComponents_INTERFACE_DEFINED__
+#define __IComponents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComponents, 0x39a48091, 0xfffe, 0x4182, 0xa1,0x61, 0x3f,0xf8,0x02,0x64,0x0e,0x26);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("39a48091-fffe-4182-a161-3ff802640e26")
+IComponents : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IEnumVARIANT **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumComponents(
+        IEnumComponents **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        VARIANT Index,
+        IComponent **ppComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IComponent *Component,
+        VARIANT *NewIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IComponents **NewList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Item(
+        VARIANT Index,
+        IComponent *ppComponent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IComponents, 0x39a48091, 0xfffe, 0x4182, 0xa1,0x61, 0x3f,0xf8,0x02,0x64,0x0e,0x26)
+#endif
+#else
+typedef struct IComponentsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComponents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComponents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComponents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IComponents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IComponents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IComponents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IComponents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponents methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IComponents* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IComponents* This,
+        IEnumVARIANT **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumComponents)(
+        IComponents* This,
+        IEnumComponents **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        IComponents* This,
+        VARIANT Index,
+        IComponent **ppComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IComponents* This,
+        IComponent *Component,
+        VARIANT *NewIndex);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IComponents* This,
+        VARIANT Index);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IComponents* This,
+        IComponents **NewList);
+
+    HRESULT (STDMETHODCALLTYPE *put_Item)(
+        IComponents* This,
+        VARIANT Index,
+        IComponent *ppComponent);
+
+    END_INTERFACE
+} IComponentsVtbl;
+interface IComponents {
+    CONST_VTBL IComponentsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IComponents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IComponents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IComponents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IComponents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IComponents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponents methods ***/
+#define IComponents_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IComponents_get__NewEnum(This,ppNewEnum) (This)->lpVtbl->get__NewEnum(This,ppNewEnum)
+#define IComponents_EnumComponents(This,ppNewEnum) (This)->lpVtbl->EnumComponents(This,ppNewEnum)
+#define IComponents_get_Item(This,Index,ppComponent) (This)->lpVtbl->get_Item(This,Index,ppComponent)
+#define IComponents_Add(This,Component,NewIndex) (This)->lpVtbl->Add(This,Component,NewIndex)
+#define IComponents_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
+#define IComponents_Clone(This,NewList) (This)->lpVtbl->Clone(This,NewList)
+#define IComponents_put_Item(This,Index,ppComponent) (This)->lpVtbl->put_Item(This,Index,ppComponent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IComponents_QueryInterface(IComponents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IComponents_AddRef(IComponents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IComponents_Release(IComponents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IComponents_GetTypeInfoCount(IComponents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IComponents_GetTypeInfo(IComponents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IComponents_GetIDsOfNames(IComponents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IComponents_Invoke(IComponents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponents methods ***/
+static FORCEINLINE HRESULT IComponents_get_Count(IComponents* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IComponents_get__NewEnum(IComponents* This,IEnumVARIANT **ppNewEnum) {
+    return This->lpVtbl->get__NewEnum(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponents_EnumComponents(IComponents* This,IEnumComponents **ppNewEnum) {
+    return This->lpVtbl->EnumComponents(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponents_get_Item(IComponents* This,VARIANT Index,IComponent **ppComponent) {
+    return This->lpVtbl->get_Item(This,Index,ppComponent);
+}
+static FORCEINLINE HRESULT IComponents_Add(IComponents* This,IComponent *Component,VARIANT *NewIndex) {
+    return This->lpVtbl->Add(This,Component,NewIndex);
+}
+static FORCEINLINE HRESULT IComponents_Remove(IComponents* This,VARIANT Index) {
+    return This->lpVtbl->Remove(This,Index);
+}
+static FORCEINLINE HRESULT IComponents_Clone(IComponents* This,IComponents **NewList) {
+    return This->lpVtbl->Clone(This,NewList);
+}
+static FORCEINLINE HRESULT IComponents_put_Item(IComponents* This,VARIANT Index,IComponent *ppComponent) {
+    return This->lpVtbl->put_Item(This,Index,ppComponent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComponents_get_Count_Proxy(
+    IComponents* This,
+    LONG *Count);
+void __RPC_STUB IComponents_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_get__NewEnum_Proxy(
+    IComponents* This,
+    IEnumVARIANT **ppNewEnum);
+void __RPC_STUB IComponents_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_EnumComponents_Proxy(
+    IComponents* This,
+    IEnumComponents **ppNewEnum);
+void __RPC_STUB IComponents_EnumComponents_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_get_Item_Proxy(
+    IComponents* This,
+    VARIANT Index,
+    IComponent **ppComponent);
+void __RPC_STUB IComponents_get_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_Add_Proxy(
+    IComponents* This,
+    IComponent *Component,
+    VARIANT *NewIndex);
+void __RPC_STUB IComponents_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_Remove_Proxy(
+    IComponents* This,
+    VARIANT Index);
+void __RPC_STUB IComponents_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_Clone_Proxy(
+    IComponents* This,
+    IComponents **NewList);
+void __RPC_STUB IComponents_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponents_put_Item_Proxy(
+    IComponents* This,
+    VARIANT Index,
+    IComponent *ppComponent);
+void __RPC_STUB IComponents_put_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComponents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IComponentsOld interface
+ */
+#ifndef __IComponentsOld_INTERFACE_DEFINED__
+#define __IComponentsOld_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComponentsOld, 0xfcd01846, 0x0e19, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fcd01846-0e19-11d3-9d8e-00c04f72d980")
+IComponentsOld : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IEnumVARIANT **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumComponents(
+        IEnumComponents **ppNewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        VARIANT Index,
+        IComponent **ppComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IComponent *Component,
+        VARIANT *NewIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IComponents **NewList) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IComponentsOld, 0xfcd01846, 0x0e19, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#else
+typedef struct IComponentsOldVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComponentsOld* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComponentsOld* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComponentsOld* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IComponentsOld* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IComponentsOld* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IComponentsOld* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IComponentsOld* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IComponentsOld methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IComponentsOld* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IComponentsOld* This,
+        IEnumVARIANT **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *EnumComponents)(
+        IComponentsOld* This,
+        IEnumComponents **ppNewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        IComponentsOld* This,
+        VARIANT Index,
+        IComponent **ppComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IComponentsOld* This,
+        IComponent *Component,
+        VARIANT *NewIndex);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IComponentsOld* This,
+        VARIANT Index);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IComponentsOld* This,
+        IComponents **NewList);
+
+    END_INTERFACE
+} IComponentsOldVtbl;
+interface IComponentsOld {
+    CONST_VTBL IComponentsOldVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IComponentsOld_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IComponentsOld_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IComponentsOld_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IComponentsOld_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IComponentsOld_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IComponentsOld_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IComponentsOld_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IComponentsOld methods ***/
+#define IComponentsOld_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IComponentsOld_get__NewEnum(This,ppNewEnum) (This)->lpVtbl->get__NewEnum(This,ppNewEnum)
+#define IComponentsOld_EnumComponents(This,ppNewEnum) (This)->lpVtbl->EnumComponents(This,ppNewEnum)
+#define IComponentsOld_get_Item(This,Index,ppComponent) (This)->lpVtbl->get_Item(This,Index,ppComponent)
+#define IComponentsOld_Add(This,Component,NewIndex) (This)->lpVtbl->Add(This,Component,NewIndex)
+#define IComponentsOld_Remove(This,Index) (This)->lpVtbl->Remove(This,Index)
+#define IComponentsOld_Clone(This,NewList) (This)->lpVtbl->Clone(This,NewList)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IComponentsOld_QueryInterface(IComponentsOld* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IComponentsOld_AddRef(IComponentsOld* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IComponentsOld_Release(IComponentsOld* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IComponentsOld_GetTypeInfoCount(IComponentsOld* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IComponentsOld_GetTypeInfo(IComponentsOld* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IComponentsOld_GetIDsOfNames(IComponentsOld* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IComponentsOld_Invoke(IComponentsOld* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IComponentsOld methods ***/
+static FORCEINLINE HRESULT IComponentsOld_get_Count(IComponentsOld* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IComponentsOld_get__NewEnum(IComponentsOld* This,IEnumVARIANT **ppNewEnum) {
+    return This->lpVtbl->get__NewEnum(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponentsOld_EnumComponents(IComponentsOld* This,IEnumComponents **ppNewEnum) {
+    return This->lpVtbl->EnumComponents(This,ppNewEnum);
+}
+static FORCEINLINE HRESULT IComponentsOld_get_Item(IComponentsOld* This,VARIANT Index,IComponent **ppComponent) {
+    return This->lpVtbl->get_Item(This,Index,ppComponent);
+}
+static FORCEINLINE HRESULT IComponentsOld_Add(IComponentsOld* This,IComponent *Component,VARIANT *NewIndex) {
+    return This->lpVtbl->Add(This,Component,NewIndex);
+}
+static FORCEINLINE HRESULT IComponentsOld_Remove(IComponentsOld* This,VARIANT Index) {
+    return This->lpVtbl->Remove(This,Index);
+}
+static FORCEINLINE HRESULT IComponentsOld_Clone(IComponentsOld* This,IComponents **NewList) {
+    return This->lpVtbl->Clone(This,NewList);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComponentsOld_get_Count_Proxy(
+    IComponentsOld* This,
+    LONG *Count);
+void __RPC_STUB IComponentsOld_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_get__NewEnum_Proxy(
+    IComponentsOld* This,
+    IEnumVARIANT **ppNewEnum);
+void __RPC_STUB IComponentsOld_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_EnumComponents_Proxy(
+    IComponentsOld* This,
+    IEnumComponents **ppNewEnum);
+void __RPC_STUB IComponentsOld_EnumComponents_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_get_Item_Proxy(
+    IComponentsOld* This,
+    VARIANT Index,
+    IComponent **ppComponent);
+void __RPC_STUB IComponentsOld_get_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_Add_Proxy(
+    IComponentsOld* This,
+    IComponent *Component,
+    VARIANT *NewIndex);
+void __RPC_STUB IComponentsOld_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_Remove_Proxy(
+    IComponentsOld* This,
+    VARIANT Index);
+void __RPC_STUB IComponentsOld_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComponentsOld_Clone_Proxy(
+    IComponentsOld* This,
+    IComponents **NewList);
+void __RPC_STUB IComponentsOld_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComponentsOld_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ILocator interface
+ */
+#ifndef __ILocator_INTERFACE_DEFINED__
+#define __ILocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ILocator, 0x286d7f89, 0x760c, 0x4f89, 0x80,0xc4, 0x66,0x84,0x1d,0x25,0x07,0xaa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("286d7f89-760c-4f89-80c4-66841d2507aa")
+ILocator : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_CarrierFrequency(
+        LONG *Frequency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CarrierFrequency(
+        LONG Frequency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InnerFEC(
+        FECMethod *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InnerFEC(
+        FECMethod FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_InnerFECRate(
+        BinaryConvolutionCodeRate *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_InnerFECRate(
+        BinaryConvolutionCodeRate FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OuterFEC(
+        FECMethod *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OuterFEC(
+        FECMethod FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OuterFECRate(
+        BinaryConvolutionCodeRate *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OuterFECRate(
+        BinaryConvolutionCodeRate FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Modulation(
+        ModulationType *Modulation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Modulation(
+        ModulationType Modulation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SymbolRate(
+        LONG *Rate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SymbolRate(
+        LONG Rate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        ILocator **NewLocator) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ILocator, 0x286d7f89, 0x760c, 0x4f89, 0x80,0xc4, 0x66,0x84,0x1d,0x25,0x07,0xaa)
+#endif
+#else
+typedef struct ILocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ILocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ILocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ILocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ILocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ILocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ILocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ILocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        ILocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        ILocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        ILocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        ILocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        ILocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        ILocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        ILocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        ILocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        ILocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        ILocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        ILocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        ILocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        ILocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        ILocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        ILocator* This,
+        ILocator **NewLocator);
+
+    END_INTERFACE
+} ILocatorVtbl;
+interface ILocator {
+    CONST_VTBL ILocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define ILocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ILocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define ILocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define ILocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define ILocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define ILocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define ILocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define ILocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define ILocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define ILocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define ILocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define ILocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define ILocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define ILocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define ILocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define ILocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define ILocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define ILocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define ILocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define ILocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define ILocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT ILocator_QueryInterface(ILocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG ILocator_AddRef(ILocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG ILocator_Release(ILocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT ILocator_GetTypeInfoCount(ILocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT ILocator_GetTypeInfo(ILocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT ILocator_GetIDsOfNames(ILocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT ILocator_Invoke(ILocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT ILocator_get_CarrierFrequency(ILocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT ILocator_put_CarrierFrequency(ILocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT ILocator_get_InnerFEC(ILocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_put_InnerFEC(ILocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_get_InnerFECRate(ILocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_put_InnerFECRate(ILocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_get_OuterFEC(ILocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_put_OuterFEC(ILocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_get_OuterFECRate(ILocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_put_OuterFECRate(ILocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT ILocator_get_Modulation(ILocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT ILocator_put_Modulation(ILocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT ILocator_get_SymbolRate(ILocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT ILocator_put_SymbolRate(ILocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT ILocator_Clone(ILocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ILocator_get_CarrierFrequency_Proxy(
+    ILocator* This,
+    LONG *Frequency);
+void __RPC_STUB ILocator_get_CarrierFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_CarrierFrequency_Proxy(
+    ILocator* This,
+    LONG Frequency);
+void __RPC_STUB ILocator_put_CarrierFrequency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_InnerFEC_Proxy(
+    ILocator* This,
+    FECMethod *FEC);
+void __RPC_STUB ILocator_get_InnerFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_InnerFEC_Proxy(
+    ILocator* This,
+    FECMethod FEC);
+void __RPC_STUB ILocator_put_InnerFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_InnerFECRate_Proxy(
+    ILocator* This,
+    BinaryConvolutionCodeRate *FEC);
+void __RPC_STUB ILocator_get_InnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_InnerFECRate_Proxy(
+    ILocator* This,
+    BinaryConvolutionCodeRate FEC);
+void __RPC_STUB ILocator_put_InnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_OuterFEC_Proxy(
+    ILocator* This,
+    FECMethod *FEC);
+void __RPC_STUB ILocator_get_OuterFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_OuterFEC_Proxy(
+    ILocator* This,
+    FECMethod FEC);
+void __RPC_STUB ILocator_put_OuterFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_OuterFECRate_Proxy(
+    ILocator* This,
+    BinaryConvolutionCodeRate *FEC);
+void __RPC_STUB ILocator_get_OuterFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_OuterFECRate_Proxy(
+    ILocator* This,
+    BinaryConvolutionCodeRate FEC);
+void __RPC_STUB ILocator_put_OuterFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_Modulation_Proxy(
+    ILocator* This,
+    ModulationType *Modulation);
+void __RPC_STUB ILocator_get_Modulation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_Modulation_Proxy(
+    ILocator* This,
+    ModulationType Modulation);
+void __RPC_STUB ILocator_put_Modulation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_get_SymbolRate_Proxy(
+    ILocator* This,
+    LONG *Rate);
+void __RPC_STUB ILocator_get_SymbolRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_put_SymbolRate_Proxy(
+    ILocator* This,
+    LONG Rate);
+void __RPC_STUB ILocator_put_SymbolRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILocator_Clone_Proxy(
+    ILocator* This,
+    ILocator **NewLocator);
+void __RPC_STUB ILocator_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ILocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAnalogLocator interface
+ */
+#ifndef __IAnalogLocator_INTERFACE_DEFINED__
+#define __IAnalogLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAnalogLocator, 0x34d1f26b, 0xe339, 0x430d, 0xab,0xce, 0x73,0x8c,0xb4,0x89,0x84,0xdc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("34d1f26b-e339-430d-abce-738cb48984dc")
+IAnalogLocator : public ILocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_VideoStandard(
+        AnalogVideoStandard *AVS) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_VideoStandard(
+        AnalogVideoStandard AVS) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAnalogLocator, 0x34d1f26b, 0xe339, 0x430d, 0xab,0xce, 0x73,0x8c,0xb4,0x89,0x84,0xdc)
+#endif
+#else
+typedef struct IAnalogLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAnalogLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAnalogLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAnalogLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IAnalogLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IAnalogLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IAnalogLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IAnalogLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IAnalogLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IAnalogLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IAnalogLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IAnalogLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IAnalogLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IAnalogLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IAnalogLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IAnalogLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IAnalogLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IAnalogLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IAnalogLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IAnalogLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IAnalogLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IAnalogLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IAnalogLocator* This,
+        ILocator **NewLocator);
+
+    /*** IAnalogLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_VideoStandard)(
+        IAnalogLocator* This,
+        AnalogVideoStandard *AVS);
+
+    HRESULT (STDMETHODCALLTYPE *put_VideoStandard)(
+        IAnalogLocator* This,
+        AnalogVideoStandard AVS);
+
+    END_INTERFACE
+} IAnalogLocatorVtbl;
+interface IAnalogLocator {
+    CONST_VTBL IAnalogLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAnalogLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAnalogLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAnalogLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IAnalogLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IAnalogLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IAnalogLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IAnalogLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IAnalogLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IAnalogLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IAnalogLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IAnalogLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IAnalogLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IAnalogLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IAnalogLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IAnalogLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IAnalogLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IAnalogLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IAnalogLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IAnalogLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IAnalogLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IAnalogLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IAnalogLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IAnalogLocator methods ***/
+#define IAnalogLocator_get_VideoStandard(This,AVS) (This)->lpVtbl->get_VideoStandard(This,AVS)
+#define IAnalogLocator_put_VideoStandard(This,AVS) (This)->lpVtbl->put_VideoStandard(This,AVS)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAnalogLocator_QueryInterface(IAnalogLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAnalogLocator_AddRef(IAnalogLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAnalogLocator_Release(IAnalogLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IAnalogLocator_GetTypeInfoCount(IAnalogLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IAnalogLocator_GetTypeInfo(IAnalogLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IAnalogLocator_GetIDsOfNames(IAnalogLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IAnalogLocator_Invoke(IAnalogLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IAnalogLocator_get_CarrierFrequency(IAnalogLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_CarrierFrequency(IAnalogLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_InnerFEC(IAnalogLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_InnerFEC(IAnalogLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_InnerFECRate(IAnalogLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_InnerFECRate(IAnalogLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_OuterFEC(IAnalogLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_OuterFEC(IAnalogLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_OuterFECRate(IAnalogLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_OuterFECRate(IAnalogLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_Modulation(IAnalogLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_Modulation(IAnalogLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IAnalogLocator_get_SymbolRate(IAnalogLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_SymbolRate(IAnalogLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IAnalogLocator_Clone(IAnalogLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IAnalogLocator methods ***/
+static FORCEINLINE HRESULT IAnalogLocator_get_VideoStandard(IAnalogLocator* This,AnalogVideoStandard *AVS) {
+    return This->lpVtbl->get_VideoStandard(This,AVS);
+}
+static FORCEINLINE HRESULT IAnalogLocator_put_VideoStandard(IAnalogLocator* This,AnalogVideoStandard AVS) {
+    return This->lpVtbl->put_VideoStandard(This,AVS);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAnalogLocator_get_VideoStandard_Proxy(
+    IAnalogLocator* This,
+    AnalogVideoStandard *AVS);
+void __RPC_STUB IAnalogLocator_get_VideoStandard_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAnalogLocator_put_VideoStandard_Proxy(
+    IAnalogLocator* This,
+    AnalogVideoStandard AVS);
+void __RPC_STUB IAnalogLocator_put_VideoStandard_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAnalogLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDigitalLocator interface
+ */
+#ifndef __IDigitalLocator_INTERFACE_DEFINED__
+#define __IDigitalLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDigitalLocator, 0x19b595d8, 0x839a, 0x47f0, 0x96,0xdf, 0x4f,0x19,0x4f,0x3c,0x76,0x8c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("19b595d8-839a-47f0-96df-4f194f3c768c")
+IDigitalLocator : public ILocator
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDigitalLocator, 0x19b595d8, 0x839a, 0x47f0, 0x96,0xdf, 0x4f,0x19,0x4f,0x3c,0x76,0x8c)
+#endif
+#else
+typedef struct IDigitalLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDigitalLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDigitalLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDigitalLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDigitalLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDigitalLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDigitalLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDigitalLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDigitalLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDigitalLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDigitalLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDigitalLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDigitalLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDigitalLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDigitalLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDigitalLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDigitalLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDigitalLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDigitalLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDigitalLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDigitalLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDigitalLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDigitalLocator* This,
+        ILocator **NewLocator);
+
+    END_INTERFACE
+} IDigitalLocatorVtbl;
+interface IDigitalLocator {
+    CONST_VTBL IDigitalLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDigitalLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDigitalLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDigitalLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDigitalLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDigitalLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDigitalLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDigitalLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDigitalLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDigitalLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDigitalLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDigitalLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDigitalLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDigitalLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDigitalLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDigitalLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDigitalLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDigitalLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDigitalLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDigitalLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDigitalLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDigitalLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDigitalLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDigitalLocator_QueryInterface(IDigitalLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDigitalLocator_AddRef(IDigitalLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDigitalLocator_Release(IDigitalLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDigitalLocator_GetTypeInfoCount(IDigitalLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDigitalLocator_GetTypeInfo(IDigitalLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDigitalLocator_GetIDsOfNames(IDigitalLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDigitalLocator_Invoke(IDigitalLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDigitalLocator_get_CarrierFrequency(IDigitalLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_CarrierFrequency(IDigitalLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_InnerFEC(IDigitalLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_InnerFEC(IDigitalLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_InnerFECRate(IDigitalLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_InnerFECRate(IDigitalLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_OuterFEC(IDigitalLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_OuterFEC(IDigitalLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_OuterFECRate(IDigitalLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_OuterFECRate(IDigitalLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_Modulation(IDigitalLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_Modulation(IDigitalLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDigitalLocator_get_SymbolRate(IDigitalLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDigitalLocator_put_SymbolRate(IDigitalLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDigitalLocator_Clone(IDigitalLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IDigitalLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IATSCLocator interface
+ */
+#ifndef __IATSCLocator_INTERFACE_DEFINED__
+#define __IATSCLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IATSCLocator, 0xbf8d986f, 0x8c2b, 0x4131, 0x94,0xd7, 0x4d,0x3d,0x9f,0xcc,0x21,0xef);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bf8d986f-8c2b-4131-94d7-4d3d9fcc21ef")
+IATSCLocator : public IDigitalLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_PhysicalChannel(
+        LONG *PhysicalChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PhysicalChannel(
+        LONG PhysicalChannel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TSID(
+        LONG *TSID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_TSID(
+        LONG TSID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IATSCLocator, 0xbf8d986f, 0x8c2b, 0x4131, 0x94,0xd7, 0x4d,0x3d,0x9f,0xcc,0x21,0xef)
+#endif
+#else
+typedef struct IATSCLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IATSCLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IATSCLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IATSCLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IATSCLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IATSCLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IATSCLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IATSCLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IATSCLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IATSCLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IATSCLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IATSCLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IATSCLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IATSCLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IATSCLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IATSCLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IATSCLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IATSCLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IATSCLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IATSCLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IATSCLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IATSCLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IATSCLocator* This,
+        ILocator **NewLocator);
+
+    /*** IATSCLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
+        IATSCLocator* This,
+        LONG *PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
+        IATSCLocator* This,
+        LONG PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *get_TSID)(
+        IATSCLocator* This,
+        LONG *TSID);
+
+    HRESULT (STDMETHODCALLTYPE *put_TSID)(
+        IATSCLocator* This,
+        LONG TSID);
+
+    END_INTERFACE
+} IATSCLocatorVtbl;
+interface IATSCLocator {
+    CONST_VTBL IATSCLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IATSCLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IATSCLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IATSCLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IATSCLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IATSCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IATSCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IATSCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IATSCLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IATSCLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IATSCLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IATSCLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IATSCLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IATSCLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IATSCLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IATSCLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IATSCLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IATSCLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IATSCLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IATSCLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IATSCLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IATSCLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IATSCLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IATSCLocator methods ***/
+#define IATSCLocator_get_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->get_PhysicalChannel(This,PhysicalChannel)
+#define IATSCLocator_put_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->put_PhysicalChannel(This,PhysicalChannel)
+#define IATSCLocator_get_TSID(This,TSID) (This)->lpVtbl->get_TSID(This,TSID)
+#define IATSCLocator_put_TSID(This,TSID) (This)->lpVtbl->put_TSID(This,TSID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IATSCLocator_QueryInterface(IATSCLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IATSCLocator_AddRef(IATSCLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IATSCLocator_Release(IATSCLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IATSCLocator_GetTypeInfoCount(IATSCLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IATSCLocator_GetTypeInfo(IATSCLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IATSCLocator_GetIDsOfNames(IATSCLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IATSCLocator_Invoke(IATSCLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IATSCLocator_get_CarrierFrequency(IATSCLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_CarrierFrequency(IATSCLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_InnerFEC(IATSCLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_InnerFEC(IATSCLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_InnerFECRate(IATSCLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_InnerFECRate(IATSCLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_OuterFEC(IATSCLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_OuterFEC(IATSCLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_OuterFECRate(IATSCLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_OuterFECRate(IATSCLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_Modulation(IATSCLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_Modulation(IATSCLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_SymbolRate(IATSCLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_SymbolRate(IATSCLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IATSCLocator_Clone(IATSCLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IATSCLocator methods ***/
+static FORCEINLINE HRESULT IATSCLocator_get_PhysicalChannel(IATSCLocator* This,LONG *PhysicalChannel) {
+    return This->lpVtbl->get_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_PhysicalChannel(IATSCLocator* This,LONG PhysicalChannel) {
+    return This->lpVtbl->put_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IATSCLocator_get_TSID(IATSCLocator* This,LONG *TSID) {
+    return This->lpVtbl->get_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IATSCLocator_put_TSID(IATSCLocator* This,LONG TSID) {
+    return This->lpVtbl->put_TSID(This,TSID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IATSCLocator_get_PhysicalChannel_Proxy(
+    IATSCLocator* This,
+    LONG *PhysicalChannel);
+void __RPC_STUB IATSCLocator_get_PhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCLocator_put_PhysicalChannel_Proxy(
+    IATSCLocator* This,
+    LONG PhysicalChannel);
+void __RPC_STUB IATSCLocator_put_PhysicalChannel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCLocator_get_TSID_Proxy(
+    IATSCLocator* This,
+    LONG *TSID);
+void __RPC_STUB IATSCLocator_get_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCLocator_put_TSID_Proxy(
+    IATSCLocator* This,
+    LONG TSID);
+void __RPC_STUB IATSCLocator_put_TSID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IATSCLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IATSCLocator2 interface
+ */
+#ifndef __IATSCLocator2_INTERFACE_DEFINED__
+#define __IATSCLocator2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IATSCLocator2, 0x612aa885, 0x66cf, 0x4090, 0xba,0x0a, 0x56,0x6f,0x53,0x12,0xe4,0xca);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("612aa885-66cf-4090-ba0a-566f5312e4ca")
+IATSCLocator2 : public IATSCLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ProgramNumber(
+        LONG *ProgramNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ProgramNumber(
+        LONG ProgramNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IATSCLocator2, 0x612aa885, 0x66cf, 0x4090, 0xba,0x0a, 0x56,0x6f,0x53,0x12,0xe4,0xca)
+#endif
+#else
+typedef struct IATSCLocator2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IATSCLocator2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IATSCLocator2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IATSCLocator2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IATSCLocator2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IATSCLocator2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IATSCLocator2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IATSCLocator2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IATSCLocator2* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IATSCLocator2* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IATSCLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IATSCLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IATSCLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IATSCLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IATSCLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IATSCLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IATSCLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IATSCLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IATSCLocator2* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IATSCLocator2* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IATSCLocator2* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IATSCLocator2* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IATSCLocator2* This,
+        ILocator **NewLocator);
+
+    /*** IATSCLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
+        IATSCLocator2* This,
+        LONG *PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
+        IATSCLocator2* This,
+        LONG PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *get_TSID)(
+        IATSCLocator2* This,
+        LONG *TSID);
+
+    HRESULT (STDMETHODCALLTYPE *put_TSID)(
+        IATSCLocator2* This,
+        LONG TSID);
+
+    /*** IATSCLocator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
+        IATSCLocator2* This,
+        LONG *ProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
+        IATSCLocator2* This,
+        LONG ProgramNumber);
+
+    END_INTERFACE
+} IATSCLocator2Vtbl;
+interface IATSCLocator2 {
+    CONST_VTBL IATSCLocator2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IATSCLocator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IATSCLocator2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IATSCLocator2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IATSCLocator2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IATSCLocator2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IATSCLocator2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IATSCLocator2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IATSCLocator2_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IATSCLocator2_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IATSCLocator2_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IATSCLocator2_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IATSCLocator2_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IATSCLocator2_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IATSCLocator2_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IATSCLocator2_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IATSCLocator2_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IATSCLocator2_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IATSCLocator2_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IATSCLocator2_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IATSCLocator2_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IATSCLocator2_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IATSCLocator2_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IATSCLocator methods ***/
+#define IATSCLocator2_get_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->get_PhysicalChannel(This,PhysicalChannel)
+#define IATSCLocator2_put_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->put_PhysicalChannel(This,PhysicalChannel)
+#define IATSCLocator2_get_TSID(This,TSID) (This)->lpVtbl->get_TSID(This,TSID)
+#define IATSCLocator2_put_TSID(This,TSID) (This)->lpVtbl->put_TSID(This,TSID)
+/*** IATSCLocator2 methods ***/
+#define IATSCLocator2_get_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->get_ProgramNumber(This,ProgramNumber)
+#define IATSCLocator2_put_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->put_ProgramNumber(This,ProgramNumber)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IATSCLocator2_QueryInterface(IATSCLocator2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IATSCLocator2_AddRef(IATSCLocator2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IATSCLocator2_Release(IATSCLocator2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IATSCLocator2_GetTypeInfoCount(IATSCLocator2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IATSCLocator2_GetTypeInfo(IATSCLocator2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IATSCLocator2_GetIDsOfNames(IATSCLocator2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IATSCLocator2_Invoke(IATSCLocator2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IATSCLocator2_get_CarrierFrequency(IATSCLocator2* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_CarrierFrequency(IATSCLocator2* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_InnerFEC(IATSCLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_InnerFEC(IATSCLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_InnerFECRate(IATSCLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_InnerFECRate(IATSCLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_OuterFEC(IATSCLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_OuterFEC(IATSCLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_OuterFECRate(IATSCLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_OuterFECRate(IATSCLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_Modulation(IATSCLocator2* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_Modulation(IATSCLocator2* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_SymbolRate(IATSCLocator2* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_SymbolRate(IATSCLocator2* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IATSCLocator2_Clone(IATSCLocator2* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IATSCLocator methods ***/
+static FORCEINLINE HRESULT IATSCLocator2_get_PhysicalChannel(IATSCLocator2* This,LONG *PhysicalChannel) {
+    return This->lpVtbl->get_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_PhysicalChannel(IATSCLocator2* This,LONG PhysicalChannel) {
+    return This->lpVtbl->put_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IATSCLocator2_get_TSID(IATSCLocator2* This,LONG *TSID) {
+    return This->lpVtbl->get_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_TSID(IATSCLocator2* This,LONG TSID) {
+    return This->lpVtbl->put_TSID(This,TSID);
+}
+/*** IATSCLocator2 methods ***/
+static FORCEINLINE HRESULT IATSCLocator2_get_ProgramNumber(IATSCLocator2* This,LONG *ProgramNumber) {
+    return This->lpVtbl->get_ProgramNumber(This,ProgramNumber);
+}
+static FORCEINLINE HRESULT IATSCLocator2_put_ProgramNumber(IATSCLocator2* This,LONG ProgramNumber) {
+    return This->lpVtbl->put_ProgramNumber(This,ProgramNumber);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IATSCLocator2_get_ProgramNumber_Proxy(
+    IATSCLocator2* This,
+    LONG *ProgramNumber);
+void __RPC_STUB IATSCLocator2_get_ProgramNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IATSCLocator2_put_ProgramNumber_Proxy(
+    IATSCLocator2* This,
+    LONG ProgramNumber);
+void __RPC_STUB IATSCLocator2_put_ProgramNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IATSCLocator2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDigitalCableLocator interface
+ */
+#ifndef __IDigitalCableLocator_INTERFACE_DEFINED__
+#define __IDigitalCableLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDigitalCableLocator, 0x48f66a11, 0x171a, 0x419a, 0x95,0x25, 0xbe,0xee,0xcd,0x51,0x58,0x4c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("48f66a11-171a-419a-9525-beeecd51584c")
+IDigitalCableLocator : public IATSCLocator2
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDigitalCableLocator, 0x48f66a11, 0x171a, 0x419a, 0x95,0x25, 0xbe,0xee,0xcd,0x51,0x58,0x4c)
+#endif
+#else
+typedef struct IDigitalCableLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDigitalCableLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDigitalCableLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDigitalCableLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDigitalCableLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDigitalCableLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDigitalCableLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDigitalCableLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDigitalCableLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDigitalCableLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDigitalCableLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDigitalCableLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDigitalCableLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDigitalCableLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDigitalCableLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDigitalCableLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDigitalCableLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDigitalCableLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDigitalCableLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDigitalCableLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDigitalCableLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDigitalCableLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDigitalCableLocator* This,
+        ILocator **NewLocator);
+
+    /*** IATSCLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
+        IDigitalCableLocator* This,
+        LONG *PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
+        IDigitalCableLocator* This,
+        LONG PhysicalChannel);
+
+    HRESULT (STDMETHODCALLTYPE *get_TSID)(
+        IDigitalCableLocator* This,
+        LONG *TSID);
+
+    HRESULT (STDMETHODCALLTYPE *put_TSID)(
+        IDigitalCableLocator* This,
+        LONG TSID);
+
+    /*** IATSCLocator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
+        IDigitalCableLocator* This,
+        LONG *ProgramNumber);
+
+    HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
+        IDigitalCableLocator* This,
+        LONG ProgramNumber);
+
+    END_INTERFACE
+} IDigitalCableLocatorVtbl;
+interface IDigitalCableLocator {
+    CONST_VTBL IDigitalCableLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDigitalCableLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDigitalCableLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDigitalCableLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDigitalCableLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDigitalCableLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDigitalCableLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDigitalCableLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDigitalCableLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDigitalCableLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDigitalCableLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDigitalCableLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDigitalCableLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDigitalCableLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDigitalCableLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDigitalCableLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDigitalCableLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDigitalCableLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDigitalCableLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDigitalCableLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDigitalCableLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDigitalCableLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDigitalCableLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IATSCLocator methods ***/
+#define IDigitalCableLocator_get_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->get_PhysicalChannel(This,PhysicalChannel)
+#define IDigitalCableLocator_put_PhysicalChannel(This,PhysicalChannel) (This)->lpVtbl->put_PhysicalChannel(This,PhysicalChannel)
+#define IDigitalCableLocator_get_TSID(This,TSID) (This)->lpVtbl->get_TSID(This,TSID)
+#define IDigitalCableLocator_put_TSID(This,TSID) (This)->lpVtbl->put_TSID(This,TSID)
+/*** IATSCLocator2 methods ***/
+#define IDigitalCableLocator_get_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->get_ProgramNumber(This,ProgramNumber)
+#define IDigitalCableLocator_put_ProgramNumber(This,ProgramNumber) (This)->lpVtbl->put_ProgramNumber(This,ProgramNumber)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDigitalCableLocator_QueryInterface(IDigitalCableLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDigitalCableLocator_AddRef(IDigitalCableLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDigitalCableLocator_Release(IDigitalCableLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDigitalCableLocator_GetTypeInfoCount(IDigitalCableLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_GetTypeInfo(IDigitalCableLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_GetIDsOfNames(IDigitalCableLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_Invoke(IDigitalCableLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDigitalCableLocator_get_CarrierFrequency(IDigitalCableLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_CarrierFrequency(IDigitalCableLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_InnerFEC(IDigitalCableLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_InnerFEC(IDigitalCableLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_InnerFECRate(IDigitalCableLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_InnerFECRate(IDigitalCableLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_OuterFEC(IDigitalCableLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_OuterFEC(IDigitalCableLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_OuterFECRate(IDigitalCableLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_OuterFECRate(IDigitalCableLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_Modulation(IDigitalCableLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_Modulation(IDigitalCableLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_SymbolRate(IDigitalCableLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_SymbolRate(IDigitalCableLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_Clone(IDigitalCableLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IATSCLocator methods ***/
+static FORCEINLINE HRESULT IDigitalCableLocator_get_PhysicalChannel(IDigitalCableLocator* This,LONG *PhysicalChannel) {
+    return This->lpVtbl->get_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_PhysicalChannel(IDigitalCableLocator* This,LONG PhysicalChannel) {
+    return This->lpVtbl->put_PhysicalChannel(This,PhysicalChannel);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_get_TSID(IDigitalCableLocator* This,LONG *TSID) {
+    return This->lpVtbl->get_TSID(This,TSID);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_TSID(IDigitalCableLocator* This,LONG TSID) {
+    return This->lpVtbl->put_TSID(This,TSID);
+}
+/*** IATSCLocator2 methods ***/
+static FORCEINLINE HRESULT IDigitalCableLocator_get_ProgramNumber(IDigitalCableLocator* This,LONG *ProgramNumber) {
+    return This->lpVtbl->get_ProgramNumber(This,ProgramNumber);
+}
+static FORCEINLINE HRESULT IDigitalCableLocator_put_ProgramNumber(IDigitalCableLocator* This,LONG ProgramNumber) {
+    return This->lpVtbl->put_ProgramNumber(This,ProgramNumber);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IDigitalCableLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBTLocator interface
+ */
+#ifndef __IDVBTLocator_INTERFACE_DEFINED__
+#define __IDVBTLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBTLocator, 0x8664da16, 0xdda2, 0x42ac, 0x92,0x6a, 0xc1,0x8f,0x91,0x27,0xc3,0x02);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8664da16-dda2-42ac-926a-c18f9127c302")
+IDVBTLocator : public IDigitalLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Bandwidth(
+        LONG *BandWidthVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Bandwidth(
+        LONG BandwidthVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LPInnerFEC(
+        FECMethod *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LPInnerFEC(
+        FECMethod FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LPInnerFECRate(
+        BinaryConvolutionCodeRate *FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LPInnerFECRate(
+        BinaryConvolutionCodeRate FEC) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HAlpha(
+        HierarchyAlpha *Alpha) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_HAlpha(
+        HierarchyAlpha Alpha) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Guard(
+        GuardInterval *GI) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Guard(
+        GuardInterval GI) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Mode(
+        TransmissionMode *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Mode(
+        TransmissionMode mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OtherFrequencyInUse(
+        VARIANT_BOOL *OtherFrequencyInUseVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OtherFrequencyInUse(
+        VARIANT_BOOL OtherFrequencyInUseVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBTLocator, 0x8664da16, 0xdda2, 0x42ac, 0x92,0x6a, 0xc1,0x8f,0x91,0x27,0xc3,0x02)
+#endif
+#else
+typedef struct IDVBTLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBTLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBTLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBTLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBTLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBTLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBTLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBTLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDVBTLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDVBTLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDVBTLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDVBTLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDVBTLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDVBTLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDVBTLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDVBTLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDVBTLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDVBTLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBTLocator* This,
+        ILocator **NewLocator);
+
+    /*** IDVBTLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
+        IDVBTLocator* This,
+        LONG *BandWidthVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
+        IDVBTLocator* This,
+        LONG BandwidthVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LPInnerFEC)(
+        IDVBTLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_LPInnerFEC)(
+        IDVBTLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_LPInnerFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_LPInnerFECRate)(
+        IDVBTLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_HAlpha)(
+        IDVBTLocator* This,
+        HierarchyAlpha *Alpha);
+
+    HRESULT (STDMETHODCALLTYPE *put_HAlpha)(
+        IDVBTLocator* This,
+        HierarchyAlpha Alpha);
+
+    HRESULT (STDMETHODCALLTYPE *get_Guard)(
+        IDVBTLocator* This,
+        GuardInterval *GI);
+
+    HRESULT (STDMETHODCALLTYPE *put_Guard)(
+        IDVBTLocator* This,
+        GuardInterval GI);
+
+    HRESULT (STDMETHODCALLTYPE *get_Mode)(
+        IDVBTLocator* This,
+        TransmissionMode *mode);
+
+    HRESULT (STDMETHODCALLTYPE *put_Mode)(
+        IDVBTLocator* This,
+        TransmissionMode mode);
+
+    HRESULT (STDMETHODCALLTYPE *get_OtherFrequencyInUse)(
+        IDVBTLocator* This,
+        VARIANT_BOOL *OtherFrequencyInUseVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_OtherFrequencyInUse)(
+        IDVBTLocator* This,
+        VARIANT_BOOL OtherFrequencyInUseVal);
+
+    END_INTERFACE
+} IDVBTLocatorVtbl;
+interface IDVBTLocator {
+    CONST_VTBL IDVBTLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBTLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBTLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBTLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBTLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBTLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBTLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBTLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDVBTLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDVBTLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDVBTLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDVBTLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDVBTLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDVBTLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDVBTLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDVBTLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDVBTLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDVBTLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDVBTLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDVBTLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDVBTLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDVBTLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDVBTLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IDVBTLocator methods ***/
+#define IDVBTLocator_get_Bandwidth(This,BandWidthVal) (This)->lpVtbl->get_Bandwidth(This,BandWidthVal)
+#define IDVBTLocator_put_Bandwidth(This,BandwidthVal) (This)->lpVtbl->put_Bandwidth(This,BandwidthVal)
+#define IDVBTLocator_get_LPInnerFEC(This,FEC) (This)->lpVtbl->get_LPInnerFEC(This,FEC)
+#define IDVBTLocator_put_LPInnerFEC(This,FEC) (This)->lpVtbl->put_LPInnerFEC(This,FEC)
+#define IDVBTLocator_get_LPInnerFECRate(This,FEC) (This)->lpVtbl->get_LPInnerFECRate(This,FEC)
+#define IDVBTLocator_put_LPInnerFECRate(This,FEC) (This)->lpVtbl->put_LPInnerFECRate(This,FEC)
+#define IDVBTLocator_get_HAlpha(This,Alpha) (This)->lpVtbl->get_HAlpha(This,Alpha)
+#define IDVBTLocator_put_HAlpha(This,Alpha) (This)->lpVtbl->put_HAlpha(This,Alpha)
+#define IDVBTLocator_get_Guard(This,GI) (This)->lpVtbl->get_Guard(This,GI)
+#define IDVBTLocator_put_Guard(This,GI) (This)->lpVtbl->put_Guard(This,GI)
+#define IDVBTLocator_get_Mode(This,mode) (This)->lpVtbl->get_Mode(This,mode)
+#define IDVBTLocator_put_Mode(This,mode) (This)->lpVtbl->put_Mode(This,mode)
+#define IDVBTLocator_get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->get_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
+#define IDVBTLocator_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBTLocator_QueryInterface(IDVBTLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBTLocator_AddRef(IDVBTLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBTLocator_Release(IDVBTLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBTLocator_GetTypeInfoCount(IDVBTLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBTLocator_GetTypeInfo(IDVBTLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBTLocator_GetIDsOfNames(IDVBTLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBTLocator_Invoke(IDVBTLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDVBTLocator_get_CarrierFrequency(IDVBTLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_CarrierFrequency(IDVBTLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_InnerFEC(IDVBTLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_InnerFEC(IDVBTLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_InnerFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_InnerFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_OuterFEC(IDVBTLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_OuterFEC(IDVBTLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_OuterFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_OuterFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_Modulation(IDVBTLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_Modulation(IDVBTLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_SymbolRate(IDVBTLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_SymbolRate(IDVBTLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBTLocator_Clone(IDVBTLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IDVBTLocator methods ***/
+static FORCEINLINE HRESULT IDVBTLocator_get_Bandwidth(IDVBTLocator* This,LONG *BandWidthVal) {
+    return This->lpVtbl->get_Bandwidth(This,BandWidthVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_Bandwidth(IDVBTLocator* This,LONG BandwidthVal) {
+    return This->lpVtbl->put_Bandwidth(This,BandwidthVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_LPInnerFEC(IDVBTLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_LPInnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_LPInnerFEC(IDVBTLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_LPInnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_LPInnerFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_LPInnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_LPInnerFECRate(IDVBTLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_LPInnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_HAlpha(IDVBTLocator* This,HierarchyAlpha *Alpha) {
+    return This->lpVtbl->get_HAlpha(This,Alpha);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_HAlpha(IDVBTLocator* This,HierarchyAlpha Alpha) {
+    return This->lpVtbl->put_HAlpha(This,Alpha);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_Guard(IDVBTLocator* This,GuardInterval *GI) {
+    return This->lpVtbl->get_Guard(This,GI);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_Guard(IDVBTLocator* This,GuardInterval GI) {
+    return This->lpVtbl->put_Guard(This,GI);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_Mode(IDVBTLocator* This,TransmissionMode *mode) {
+    return This->lpVtbl->get_Mode(This,mode);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_Mode(IDVBTLocator* This,TransmissionMode mode) {
+    return This->lpVtbl->put_Mode(This,mode);
+}
+static FORCEINLINE HRESULT IDVBTLocator_get_OtherFrequencyInUse(IDVBTLocator* This,VARIANT_BOOL *OtherFrequencyInUseVal) {
+    return This->lpVtbl->get_OtherFrequencyInUse(This,OtherFrequencyInUseVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator_put_OtherFrequencyInUse(IDVBTLocator* This,VARIANT_BOOL OtherFrequencyInUseVal) {
+    return This->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Bandwidth_Proxy(
+    IDVBTLocator* This,
+    LONG *BandWidthVal);
+void __RPC_STUB IDVBTLocator_get_Bandwidth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Bandwidth_Proxy(
+    IDVBTLocator* This,
+    LONG BandwidthVal);
+void __RPC_STUB IDVBTLocator_put_Bandwidth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFEC_Proxy(
+    IDVBTLocator* This,
+    FECMethod *FEC);
+void __RPC_STUB IDVBTLocator_get_LPInnerFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFEC_Proxy(
+    IDVBTLocator* This,
+    FECMethod FEC);
+void __RPC_STUB IDVBTLocator_put_LPInnerFEC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFECRate_Proxy(
+    IDVBTLocator* This,
+    BinaryConvolutionCodeRate *FEC);
+void __RPC_STUB IDVBTLocator_get_LPInnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFECRate_Proxy(
+    IDVBTLocator* This,
+    BinaryConvolutionCodeRate FEC);
+void __RPC_STUB IDVBTLocator_put_LPInnerFECRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_HAlpha_Proxy(
+    IDVBTLocator* This,
+    HierarchyAlpha *Alpha);
+void __RPC_STUB IDVBTLocator_get_HAlpha_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_HAlpha_Proxy(
+    IDVBTLocator* This,
+    HierarchyAlpha Alpha);
+void __RPC_STUB IDVBTLocator_put_HAlpha_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Guard_Proxy(
+    IDVBTLocator* This,
+    GuardInterval *GI);
+void __RPC_STUB IDVBTLocator_get_Guard_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Guard_Proxy(
+    IDVBTLocator* This,
+    GuardInterval GI);
+void __RPC_STUB IDVBTLocator_put_Guard_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Mode_Proxy(
+    IDVBTLocator* This,
+    TransmissionMode *mode);
+void __RPC_STUB IDVBTLocator_get_Mode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Mode_Proxy(
+    IDVBTLocator* This,
+    TransmissionMode mode);
+void __RPC_STUB IDVBTLocator_put_Mode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_get_OtherFrequencyInUse_Proxy(
+    IDVBTLocator* This,
+    VARIANT_BOOL *OtherFrequencyInUseVal);
+void __RPC_STUB IDVBTLocator_get_OtherFrequencyInUse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator_put_OtherFrequencyInUse_Proxy(
+    IDVBTLocator* This,
+    VARIANT_BOOL OtherFrequencyInUseVal);
+void __RPC_STUB IDVBTLocator_put_OtherFrequencyInUse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBTLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBTLocator2 interface
+ */
+#ifndef __IDVBTLocator2_INTERFACE_DEFINED__
+#define __IDVBTLocator2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBTLocator2, 0x448a2edf, 0xae95, 0x4b43, 0xa3,0xcc, 0x74,0x78,0x43,0xc4,0x53,0xd4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("448a2edf-ae95-4b43-a3cc-747843c453d4")
+IDVBTLocator2 : public IDVBTLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_PhysicalLayerPipeId(
+        LONG *PhysicalLayerPipeIdVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PhysicalLayerPipeId(
+        LONG PhysicalLayerPipeIdVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBTLocator2, 0x448a2edf, 0xae95, 0x4b43, 0xa3,0xcc, 0x74,0x78,0x43,0xc4,0x53,0xd4)
+#endif
+#else
+typedef struct IDVBTLocator2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBTLocator2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBTLocator2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBTLocator2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBTLocator2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBTLocator2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBTLocator2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBTLocator2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDVBTLocator2* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDVBTLocator2* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDVBTLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDVBTLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDVBTLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDVBTLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDVBTLocator2* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDVBTLocator2* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDVBTLocator2* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDVBTLocator2* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBTLocator2* This,
+        ILocator **NewLocator);
+
+    /*** IDVBTLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
+        IDVBTLocator2* This,
+        LONG *BandWidthVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
+        IDVBTLocator2* This,
+        LONG BandwidthVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LPInnerFEC)(
+        IDVBTLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_LPInnerFEC)(
+        IDVBTLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_LPInnerFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_LPInnerFECRate)(
+        IDVBTLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_HAlpha)(
+        IDVBTLocator2* This,
+        HierarchyAlpha *Alpha);
+
+    HRESULT (STDMETHODCALLTYPE *put_HAlpha)(
+        IDVBTLocator2* This,
+        HierarchyAlpha Alpha);
+
+    HRESULT (STDMETHODCALLTYPE *get_Guard)(
+        IDVBTLocator2* This,
+        GuardInterval *GI);
+
+    HRESULT (STDMETHODCALLTYPE *put_Guard)(
+        IDVBTLocator2* This,
+        GuardInterval GI);
+
+    HRESULT (STDMETHODCALLTYPE *get_Mode)(
+        IDVBTLocator2* This,
+        TransmissionMode *mode);
+
+    HRESULT (STDMETHODCALLTYPE *put_Mode)(
+        IDVBTLocator2* This,
+        TransmissionMode mode);
+
+    HRESULT (STDMETHODCALLTYPE *get_OtherFrequencyInUse)(
+        IDVBTLocator2* This,
+        VARIANT_BOOL *OtherFrequencyInUseVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_OtherFrequencyInUse)(
+        IDVBTLocator2* This,
+        VARIANT_BOOL OtherFrequencyInUseVal);
+
+    /*** IDVBTLocator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PhysicalLayerPipeId)(
+        IDVBTLocator2* This,
+        LONG *PhysicalLayerPipeIdVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_PhysicalLayerPipeId)(
+        IDVBTLocator2* This,
+        LONG PhysicalLayerPipeIdVal);
+
+    END_INTERFACE
+} IDVBTLocator2Vtbl;
+interface IDVBTLocator2 {
+    CONST_VTBL IDVBTLocator2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBTLocator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBTLocator2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBTLocator2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBTLocator2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBTLocator2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBTLocator2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBTLocator2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDVBTLocator2_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDVBTLocator2_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDVBTLocator2_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDVBTLocator2_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDVBTLocator2_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDVBTLocator2_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDVBTLocator2_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDVBTLocator2_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDVBTLocator2_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDVBTLocator2_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDVBTLocator2_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDVBTLocator2_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDVBTLocator2_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDVBTLocator2_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDVBTLocator2_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IDVBTLocator methods ***/
+#define IDVBTLocator2_get_Bandwidth(This,BandWidthVal) (This)->lpVtbl->get_Bandwidth(This,BandWidthVal)
+#define IDVBTLocator2_put_Bandwidth(This,BandwidthVal) (This)->lpVtbl->put_Bandwidth(This,BandwidthVal)
+#define IDVBTLocator2_get_LPInnerFEC(This,FEC) (This)->lpVtbl->get_LPInnerFEC(This,FEC)
+#define IDVBTLocator2_put_LPInnerFEC(This,FEC) (This)->lpVtbl->put_LPInnerFEC(This,FEC)
+#define IDVBTLocator2_get_LPInnerFECRate(This,FEC) (This)->lpVtbl->get_LPInnerFECRate(This,FEC)
+#define IDVBTLocator2_put_LPInnerFECRate(This,FEC) (This)->lpVtbl->put_LPInnerFECRate(This,FEC)
+#define IDVBTLocator2_get_HAlpha(This,Alpha) (This)->lpVtbl->get_HAlpha(This,Alpha)
+#define IDVBTLocator2_put_HAlpha(This,Alpha) (This)->lpVtbl->put_HAlpha(This,Alpha)
+#define IDVBTLocator2_get_Guard(This,GI) (This)->lpVtbl->get_Guard(This,GI)
+#define IDVBTLocator2_put_Guard(This,GI) (This)->lpVtbl->put_Guard(This,GI)
+#define IDVBTLocator2_get_Mode(This,mode) (This)->lpVtbl->get_Mode(This,mode)
+#define IDVBTLocator2_put_Mode(This,mode) (This)->lpVtbl->put_Mode(This,mode)
+#define IDVBTLocator2_get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->get_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
+#define IDVBTLocator2_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) (This)->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal)
+/*** IDVBTLocator2 methods ***/
+#define IDVBTLocator2_get_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal) (This)->lpVtbl->get_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal)
+#define IDVBTLocator2_put_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal) (This)->lpVtbl->put_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBTLocator2_QueryInterface(IDVBTLocator2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBTLocator2_AddRef(IDVBTLocator2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBTLocator2_Release(IDVBTLocator2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBTLocator2_GetTypeInfoCount(IDVBTLocator2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_GetTypeInfo(IDVBTLocator2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_GetIDsOfNames(IDVBTLocator2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_Invoke(IDVBTLocator2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDVBTLocator2_get_CarrierFrequency(IDVBTLocator2* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_CarrierFrequency(IDVBTLocator2* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_InnerFEC(IDVBTLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_InnerFEC(IDVBTLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_InnerFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_InnerFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_OuterFEC(IDVBTLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_OuterFEC(IDVBTLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_OuterFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_OuterFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_Modulation(IDVBTLocator2* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_Modulation(IDVBTLocator2* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_SymbolRate(IDVBTLocator2* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_SymbolRate(IDVBTLocator2* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_Clone(IDVBTLocator2* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IDVBTLocator methods ***/
+static FORCEINLINE HRESULT IDVBTLocator2_get_Bandwidth(IDVBTLocator2* This,LONG *BandWidthVal) {
+    return This->lpVtbl->get_Bandwidth(This,BandWidthVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_Bandwidth(IDVBTLocator2* This,LONG BandwidthVal) {
+    return This->lpVtbl->put_Bandwidth(This,BandwidthVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_LPInnerFEC(IDVBTLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_LPInnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_LPInnerFEC(IDVBTLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_LPInnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_LPInnerFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_LPInnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_LPInnerFECRate(IDVBTLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_LPInnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_HAlpha(IDVBTLocator2* This,HierarchyAlpha *Alpha) {
+    return This->lpVtbl->get_HAlpha(This,Alpha);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_HAlpha(IDVBTLocator2* This,HierarchyAlpha Alpha) {
+    return This->lpVtbl->put_HAlpha(This,Alpha);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_Guard(IDVBTLocator2* This,GuardInterval *GI) {
+    return This->lpVtbl->get_Guard(This,GI);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_Guard(IDVBTLocator2* This,GuardInterval GI) {
+    return This->lpVtbl->put_Guard(This,GI);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_Mode(IDVBTLocator2* This,TransmissionMode *mode) {
+    return This->lpVtbl->get_Mode(This,mode);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_Mode(IDVBTLocator2* This,TransmissionMode mode) {
+    return This->lpVtbl->put_Mode(This,mode);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_get_OtherFrequencyInUse(IDVBTLocator2* This,VARIANT_BOOL *OtherFrequencyInUseVal) {
+    return This->lpVtbl->get_OtherFrequencyInUse(This,OtherFrequencyInUseVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_OtherFrequencyInUse(IDVBTLocator2* This,VARIANT_BOOL OtherFrequencyInUseVal) {
+    return This->lpVtbl->put_OtherFrequencyInUse(This,OtherFrequencyInUseVal);
+}
+/*** IDVBTLocator2 methods ***/
+static FORCEINLINE HRESULT IDVBTLocator2_get_PhysicalLayerPipeId(IDVBTLocator2* This,LONG *PhysicalLayerPipeIdVal) {
+    return This->lpVtbl->get_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal);
+}
+static FORCEINLINE HRESULT IDVBTLocator2_put_PhysicalLayerPipeId(IDVBTLocator2* This,LONG PhysicalLayerPipeIdVal) {
+    return This->lpVtbl->put_PhysicalLayerPipeId(This,PhysicalLayerPipeIdVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBTLocator2_get_PhysicalLayerPipeId_Proxy(
+    IDVBTLocator2* This,
+    LONG *PhysicalLayerPipeIdVal);
+void __RPC_STUB IDVBTLocator2_get_PhysicalLayerPipeId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBTLocator2_put_PhysicalLayerPipeId_Proxy(
+    IDVBTLocator2* This,
+    LONG PhysicalLayerPipeIdVal);
+void __RPC_STUB IDVBTLocator2_put_PhysicalLayerPipeId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBTLocator2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBSLocator interface
+ */
+#ifndef __IDVBSLocator_INTERFACE_DEFINED__
+#define __IDVBSLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBSLocator, 0x3d7c353c, 0x0d04, 0x45f1, 0xa7,0x42, 0xf9,0x7c,0xc1,0x18,0x8d,0xc8);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3d7c353c-0d04-45f1-a742-f97cc1188dc8")
+IDVBSLocator : public IDigitalLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SignalPolarisation(
+        Polarisation *PolarisationVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalPolarisation(
+        Polarisation PolarisationVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_WestPosition(
+        VARIANT_BOOL *WestLongitude) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_WestPosition(
+        VARIANT_BOOL WestLongitude) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OrbitalPosition(
+        LONG *longitude) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OrbitalPosition(
+        LONG longitude) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Azimuth(
+        LONG *Azimuth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Azimuth(
+        LONG Azimuth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Elevation(
+        LONG *Elevation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Elevation(
+        LONG Elevation) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBSLocator, 0x3d7c353c, 0x0d04, 0x45f1, 0xa7,0x42, 0xf9,0x7c,0xc1,0x18,0x8d,0xc8)
+#endif
+#else
+typedef struct IDVBSLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBSLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBSLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBSLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBSLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBSLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBSLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBSLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDVBSLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDVBSLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDVBSLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDVBSLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDVBSLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDVBSLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDVBSLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDVBSLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDVBSLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDVBSLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDVBSLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDVBSLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDVBSLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDVBSLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBSLocator* This,
+        ILocator **NewLocator);
+
+    /*** IDVBSLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
+        IDVBSLocator* This,
+        Polarisation *PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
+        IDVBSLocator* This,
+        Polarisation PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
+        IDVBSLocator* This,
+        VARIANT_BOOL *WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
+        IDVBSLocator* This,
+        VARIANT_BOOL WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
+        IDVBSLocator* This,
+        LONG *longitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
+        IDVBSLocator* This,
+        LONG longitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
+        IDVBSLocator* This,
+        LONG *Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
+        IDVBSLocator* This,
+        LONG Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Elevation)(
+        IDVBSLocator* This,
+        LONG *Elevation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Elevation)(
+        IDVBSLocator* This,
+        LONG Elevation);
+
+    END_INTERFACE
+} IDVBSLocatorVtbl;
+interface IDVBSLocator {
+    CONST_VTBL IDVBSLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBSLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBSLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBSLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBSLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBSLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBSLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBSLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDVBSLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDVBSLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDVBSLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDVBSLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDVBSLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDVBSLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDVBSLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDVBSLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDVBSLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDVBSLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDVBSLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDVBSLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDVBSLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDVBSLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDVBSLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IDVBSLocator methods ***/
+#define IDVBSLocator_get_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->get_SignalPolarisation(This,PolarisationVal)
+#define IDVBSLocator_put_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->put_SignalPolarisation(This,PolarisationVal)
+#define IDVBSLocator_get_WestPosition(This,WestLongitude) (This)->lpVtbl->get_WestPosition(This,WestLongitude)
+#define IDVBSLocator_put_WestPosition(This,WestLongitude) (This)->lpVtbl->put_WestPosition(This,WestLongitude)
+#define IDVBSLocator_get_OrbitalPosition(This,longitude) (This)->lpVtbl->get_OrbitalPosition(This,longitude)
+#define IDVBSLocator_put_OrbitalPosition(This,longitude) (This)->lpVtbl->put_OrbitalPosition(This,longitude)
+#define IDVBSLocator_get_Azimuth(This,Azimuth) (This)->lpVtbl->get_Azimuth(This,Azimuth)
+#define IDVBSLocator_put_Azimuth(This,Azimuth) (This)->lpVtbl->put_Azimuth(This,Azimuth)
+#define IDVBSLocator_get_Elevation(This,Elevation) (This)->lpVtbl->get_Elevation(This,Elevation)
+#define IDVBSLocator_put_Elevation(This,Elevation) (This)->lpVtbl->put_Elevation(This,Elevation)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBSLocator_QueryInterface(IDVBSLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBSLocator_AddRef(IDVBSLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBSLocator_Release(IDVBSLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBSLocator_GetTypeInfoCount(IDVBSLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBSLocator_GetTypeInfo(IDVBSLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBSLocator_GetIDsOfNames(IDVBSLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBSLocator_Invoke(IDVBSLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDVBSLocator_get_CarrierFrequency(IDVBSLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_CarrierFrequency(IDVBSLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_InnerFEC(IDVBSLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_InnerFEC(IDVBSLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_InnerFECRate(IDVBSLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_InnerFECRate(IDVBSLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_OuterFEC(IDVBSLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_OuterFEC(IDVBSLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_OuterFECRate(IDVBSLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_OuterFECRate(IDVBSLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_Modulation(IDVBSLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_Modulation(IDVBSLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_SymbolRate(IDVBSLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_SymbolRate(IDVBSLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBSLocator_Clone(IDVBSLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IDVBSLocator methods ***/
+static FORCEINLINE HRESULT IDVBSLocator_get_SignalPolarisation(IDVBSLocator* This,Polarisation *PolarisationVal) {
+    return This->lpVtbl->get_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_SignalPolarisation(IDVBSLocator* This,Polarisation PolarisationVal) {
+    return This->lpVtbl->put_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_WestPosition(IDVBSLocator* This,VARIANT_BOOL *WestLongitude) {
+    return This->lpVtbl->get_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_WestPosition(IDVBSLocator* This,VARIANT_BOOL WestLongitude) {
+    return This->lpVtbl->put_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_OrbitalPosition(IDVBSLocator* This,LONG *longitude) {
+    return This->lpVtbl->get_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_OrbitalPosition(IDVBSLocator* This,LONG longitude) {
+    return This->lpVtbl->put_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_Azimuth(IDVBSLocator* This,LONG *Azimuth) {
+    return This->lpVtbl->get_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_Azimuth(IDVBSLocator* This,LONG Azimuth) {
+    return This->lpVtbl->put_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IDVBSLocator_get_Elevation(IDVBSLocator* This,LONG *Elevation) {
+    return This->lpVtbl->get_Elevation(This,Elevation);
+}
+static FORCEINLINE HRESULT IDVBSLocator_put_Elevation(IDVBSLocator* This,LONG Elevation) {
+    return This->lpVtbl->put_Elevation(This,Elevation);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBSLocator_get_SignalPolarisation_Proxy(
+    IDVBSLocator* This,
+    Polarisation *PolarisationVal);
+void __RPC_STUB IDVBSLocator_get_SignalPolarisation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_put_SignalPolarisation_Proxy(
+    IDVBSLocator* This,
+    Polarisation PolarisationVal);
+void __RPC_STUB IDVBSLocator_put_SignalPolarisation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_get_WestPosition_Proxy(
+    IDVBSLocator* This,
+    VARIANT_BOOL *WestLongitude);
+void __RPC_STUB IDVBSLocator_get_WestPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_put_WestPosition_Proxy(
+    IDVBSLocator* This,
+    VARIANT_BOOL WestLongitude);
+void __RPC_STUB IDVBSLocator_put_WestPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_get_OrbitalPosition_Proxy(
+    IDVBSLocator* This,
+    LONG *longitude);
+void __RPC_STUB IDVBSLocator_get_OrbitalPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_put_OrbitalPosition_Proxy(
+    IDVBSLocator* This,
+    LONG longitude);
+void __RPC_STUB IDVBSLocator_put_OrbitalPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Azimuth_Proxy(
+    IDVBSLocator* This,
+    LONG *Azimuth);
+void __RPC_STUB IDVBSLocator_get_Azimuth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Azimuth_Proxy(
+    IDVBSLocator* This,
+    LONG Azimuth);
+void __RPC_STUB IDVBSLocator_put_Azimuth_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Elevation_Proxy(
+    IDVBSLocator* This,
+    LONG *Elevation);
+void __RPC_STUB IDVBSLocator_get_Elevation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Elevation_Proxy(
+    IDVBSLocator* This,
+    LONG Elevation);
+void __RPC_STUB IDVBSLocator_put_Elevation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBSLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBSLocator2 interface
+ */
+#ifndef __IDVBSLocator2_INTERFACE_DEFINED__
+#define __IDVBSLocator2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBSLocator2, 0x6044634a, 0x1733, 0x4f99, 0xb9,0x82, 0x5f,0xb1,0x2a,0xfc,0xe4,0xf0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6044634a-1733-4f99-b982-5fb12afce4f0")
+IDVBSLocator2 : public IDVBSLocator
+{
+    virtual HRESULT STDMETHODCALLTYPE get_DiseqLNBSource(
+        LNB_Source *DiseqLNBSourceVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DiseqLNBSource(
+        LNB_Source DiseqLNBSourceVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalOscillatorOverrideLow(
+        LONG *LocalOscillatorOverrideLowVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LocalOscillatorOverrideLow(
+        LONG LocalOscillatorOverrideLowVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalOscillatorOverrideHigh(
+        LONG *LocalOscillatorOverrideHighVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LocalOscillatorOverrideHigh(
+        LONG LocalOscillatorOverrideHighVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalLNBSwitchOverride(
+        LONG *LocalLNBSwitchOverrideVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LocalLNBSwitchOverride(
+        LONG LocalLNBSwitchOverrideVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocalSpectralInversionOverride(
+        SpectralInversion *LocalSpectralInversionOverrideVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_LocalSpectralInversionOverride(
+        SpectralInversion LocalSpectralInversionOverrideVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalRollOff(
+        RollOff *RollOffVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalRollOff(
+        RollOff RollOffVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SignalPilot(
+        Pilot *PilotVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SignalPilot(
+        Pilot PilotVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBSLocator2, 0x6044634a, 0x1733, 0x4f99, 0xb9,0x82, 0x5f,0xb1,0x2a,0xfc,0xe4,0xf0)
+#endif
+#else
+typedef struct IDVBSLocator2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBSLocator2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBSLocator2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBSLocator2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBSLocator2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBSLocator2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBSLocator2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBSLocator2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDVBSLocator2* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDVBSLocator2* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDVBSLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDVBSLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDVBSLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDVBSLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDVBSLocator2* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDVBSLocator2* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDVBSLocator2* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDVBSLocator2* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDVBSLocator2* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDVBSLocator2* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDVBSLocator2* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDVBSLocator2* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBSLocator2* This,
+        ILocator **NewLocator);
+
+    /*** IDVBSLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
+        IDVBSLocator2* This,
+        Polarisation *PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
+        IDVBSLocator2* This,
+        Polarisation PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
+        IDVBSLocator2* This,
+        VARIANT_BOOL *WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
+        IDVBSLocator2* This,
+        VARIANT_BOOL WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
+        IDVBSLocator2* This,
+        LONG *longitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
+        IDVBSLocator2* This,
+        LONG longitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
+        IDVBSLocator2* This,
+        LONG *Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
+        IDVBSLocator2* This,
+        LONG Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Elevation)(
+        IDVBSLocator2* This,
+        LONG *Elevation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Elevation)(
+        IDVBSLocator2* This,
+        LONG Elevation);
+
+    /*** IDVBSLocator2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_DiseqLNBSource)(
+        IDVBSLocator2* This,
+        LNB_Source *DiseqLNBSourceVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_DiseqLNBSource)(
+        IDVBSLocator2* This,
+        LNB_Source DiseqLNBSourceVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalOscillatorOverrideLow)(
+        IDVBSLocator2* This,
+        LONG *LocalOscillatorOverrideLowVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_LocalOscillatorOverrideLow)(
+        IDVBSLocator2* This,
+        LONG LocalOscillatorOverrideLowVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalOscillatorOverrideHigh)(
+        IDVBSLocator2* This,
+        LONG *LocalOscillatorOverrideHighVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_LocalOscillatorOverrideHigh)(
+        IDVBSLocator2* This,
+        LONG LocalOscillatorOverrideHighVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalLNBSwitchOverride)(
+        IDVBSLocator2* This,
+        LONG *LocalLNBSwitchOverrideVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_LocalLNBSwitchOverride)(
+        IDVBSLocator2* This,
+        LONG LocalLNBSwitchOverrideVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocalSpectralInversionOverride)(
+        IDVBSLocator2* This,
+        SpectralInversion *LocalSpectralInversionOverrideVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_LocalSpectralInversionOverride)(
+        IDVBSLocator2* This,
+        SpectralInversion LocalSpectralInversionOverrideVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalRollOff)(
+        IDVBSLocator2* This,
+        RollOff *RollOffVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalRollOff)(
+        IDVBSLocator2* This,
+        RollOff RollOffVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_SignalPilot)(
+        IDVBSLocator2* This,
+        Pilot *PilotVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalPilot)(
+        IDVBSLocator2* This,
+        Pilot PilotVal);
+
+    END_INTERFACE
+} IDVBSLocator2Vtbl;
+interface IDVBSLocator2 {
+    CONST_VTBL IDVBSLocator2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBSLocator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBSLocator2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBSLocator2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBSLocator2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBSLocator2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBSLocator2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBSLocator2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDVBSLocator2_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDVBSLocator2_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDVBSLocator2_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDVBSLocator2_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDVBSLocator2_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDVBSLocator2_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDVBSLocator2_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDVBSLocator2_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDVBSLocator2_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDVBSLocator2_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDVBSLocator2_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDVBSLocator2_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDVBSLocator2_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDVBSLocator2_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDVBSLocator2_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IDVBSLocator methods ***/
+#define IDVBSLocator2_get_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->get_SignalPolarisation(This,PolarisationVal)
+#define IDVBSLocator2_put_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->put_SignalPolarisation(This,PolarisationVal)
+#define IDVBSLocator2_get_WestPosition(This,WestLongitude) (This)->lpVtbl->get_WestPosition(This,WestLongitude)
+#define IDVBSLocator2_put_WestPosition(This,WestLongitude) (This)->lpVtbl->put_WestPosition(This,WestLongitude)
+#define IDVBSLocator2_get_OrbitalPosition(This,longitude) (This)->lpVtbl->get_OrbitalPosition(This,longitude)
+#define IDVBSLocator2_put_OrbitalPosition(This,longitude) (This)->lpVtbl->put_OrbitalPosition(This,longitude)
+#define IDVBSLocator2_get_Azimuth(This,Azimuth) (This)->lpVtbl->get_Azimuth(This,Azimuth)
+#define IDVBSLocator2_put_Azimuth(This,Azimuth) (This)->lpVtbl->put_Azimuth(This,Azimuth)
+#define IDVBSLocator2_get_Elevation(This,Elevation) (This)->lpVtbl->get_Elevation(This,Elevation)
+#define IDVBSLocator2_put_Elevation(This,Elevation) (This)->lpVtbl->put_Elevation(This,Elevation)
+/*** IDVBSLocator2 methods ***/
+#define IDVBSLocator2_get_DiseqLNBSource(This,DiseqLNBSourceVal) (This)->lpVtbl->get_DiseqLNBSource(This,DiseqLNBSourceVal)
+#define IDVBSLocator2_put_DiseqLNBSource(This,DiseqLNBSourceVal) (This)->lpVtbl->put_DiseqLNBSource(This,DiseqLNBSourceVal)
+#define IDVBSLocator2_get_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal) (This)->lpVtbl->get_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal)
+#define IDVBSLocator2_put_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal) (This)->lpVtbl->put_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal)
+#define IDVBSLocator2_get_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal) (This)->lpVtbl->get_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal)
+#define IDVBSLocator2_put_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal) (This)->lpVtbl->put_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal)
+#define IDVBSLocator2_get_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal) (This)->lpVtbl->get_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal)
+#define IDVBSLocator2_put_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal) (This)->lpVtbl->put_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal)
+#define IDVBSLocator2_get_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal) (This)->lpVtbl->get_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal)
+#define IDVBSLocator2_put_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal) (This)->lpVtbl->put_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal)
+#define IDVBSLocator2_get_SignalRollOff(This,RollOffVal) (This)->lpVtbl->get_SignalRollOff(This,RollOffVal)
+#define IDVBSLocator2_put_SignalRollOff(This,RollOffVal) (This)->lpVtbl->put_SignalRollOff(This,RollOffVal)
+#define IDVBSLocator2_get_SignalPilot(This,PilotVal) (This)->lpVtbl->get_SignalPilot(This,PilotVal)
+#define IDVBSLocator2_put_SignalPilot(This,PilotVal) (This)->lpVtbl->put_SignalPilot(This,PilotVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBSLocator2_QueryInterface(IDVBSLocator2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBSLocator2_AddRef(IDVBSLocator2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBSLocator2_Release(IDVBSLocator2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBSLocator2_GetTypeInfoCount(IDVBSLocator2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_GetTypeInfo(IDVBSLocator2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_GetIDsOfNames(IDVBSLocator2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_Invoke(IDVBSLocator2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDVBSLocator2_get_CarrierFrequency(IDVBSLocator2* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_CarrierFrequency(IDVBSLocator2* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_InnerFEC(IDVBSLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_InnerFEC(IDVBSLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_InnerFECRate(IDVBSLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_InnerFECRate(IDVBSLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_OuterFEC(IDVBSLocator2* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_OuterFEC(IDVBSLocator2* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_OuterFECRate(IDVBSLocator2* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_OuterFECRate(IDVBSLocator2* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_Modulation(IDVBSLocator2* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_Modulation(IDVBSLocator2* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_SymbolRate(IDVBSLocator2* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_SymbolRate(IDVBSLocator2* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_Clone(IDVBSLocator2* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IDVBSLocator methods ***/
+static FORCEINLINE HRESULT IDVBSLocator2_get_SignalPolarisation(IDVBSLocator2* This,Polarisation *PolarisationVal) {
+    return This->lpVtbl->get_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_SignalPolarisation(IDVBSLocator2* This,Polarisation PolarisationVal) {
+    return This->lpVtbl->put_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_WestPosition(IDVBSLocator2* This,VARIANT_BOOL *WestLongitude) {
+    return This->lpVtbl->get_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_WestPosition(IDVBSLocator2* This,VARIANT_BOOL WestLongitude) {
+    return This->lpVtbl->put_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_OrbitalPosition(IDVBSLocator2* This,LONG *longitude) {
+    return This->lpVtbl->get_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_OrbitalPosition(IDVBSLocator2* This,LONG longitude) {
+    return This->lpVtbl->put_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_Azimuth(IDVBSLocator2* This,LONG *Azimuth) {
+    return This->lpVtbl->get_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_Azimuth(IDVBSLocator2* This,LONG Azimuth) {
+    return This->lpVtbl->put_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_Elevation(IDVBSLocator2* This,LONG *Elevation) {
+    return This->lpVtbl->get_Elevation(This,Elevation);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_Elevation(IDVBSLocator2* This,LONG Elevation) {
+    return This->lpVtbl->put_Elevation(This,Elevation);
+}
+/*** IDVBSLocator2 methods ***/
+static FORCEINLINE HRESULT IDVBSLocator2_get_DiseqLNBSource(IDVBSLocator2* This,LNB_Source *DiseqLNBSourceVal) {
+    return This->lpVtbl->get_DiseqLNBSource(This,DiseqLNBSourceVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_DiseqLNBSource(IDVBSLocator2* This,LNB_Source DiseqLNBSourceVal) {
+    return This->lpVtbl->put_DiseqLNBSource(This,DiseqLNBSourceVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_LocalOscillatorOverrideLow(IDVBSLocator2* This,LONG *LocalOscillatorOverrideLowVal) {
+    return This->lpVtbl->get_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_LocalOscillatorOverrideLow(IDVBSLocator2* This,LONG LocalOscillatorOverrideLowVal) {
+    return This->lpVtbl->put_LocalOscillatorOverrideLow(This,LocalOscillatorOverrideLowVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_LocalOscillatorOverrideHigh(IDVBSLocator2* This,LONG *LocalOscillatorOverrideHighVal) {
+    return This->lpVtbl->get_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_LocalOscillatorOverrideHigh(IDVBSLocator2* This,LONG LocalOscillatorOverrideHighVal) {
+    return This->lpVtbl->put_LocalOscillatorOverrideHigh(This,LocalOscillatorOverrideHighVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_LocalLNBSwitchOverride(IDVBSLocator2* This,LONG *LocalLNBSwitchOverrideVal) {
+    return This->lpVtbl->get_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_LocalLNBSwitchOverride(IDVBSLocator2* This,LONG LocalLNBSwitchOverrideVal) {
+    return This->lpVtbl->put_LocalLNBSwitchOverride(This,LocalLNBSwitchOverrideVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_LocalSpectralInversionOverride(IDVBSLocator2* This,SpectralInversion *LocalSpectralInversionOverrideVal) {
+    return This->lpVtbl->get_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_LocalSpectralInversionOverride(IDVBSLocator2* This,SpectralInversion LocalSpectralInversionOverrideVal) {
+    return This->lpVtbl->put_LocalSpectralInversionOverride(This,LocalSpectralInversionOverrideVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_SignalRollOff(IDVBSLocator2* This,RollOff *RollOffVal) {
+    return This->lpVtbl->get_SignalRollOff(This,RollOffVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_SignalRollOff(IDVBSLocator2* This,RollOff RollOffVal) {
+    return This->lpVtbl->put_SignalRollOff(This,RollOffVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_get_SignalPilot(IDVBSLocator2* This,Pilot *PilotVal) {
+    return This->lpVtbl->get_SignalPilot(This,PilotVal);
+}
+static FORCEINLINE HRESULT IDVBSLocator2_put_SignalPilot(IDVBSLocator2* This,Pilot PilotVal) {
+    return This->lpVtbl->put_SignalPilot(This,PilotVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_DiseqLNBSource_Proxy(
+    IDVBSLocator2* This,
+    LNB_Source *DiseqLNBSourceVal);
+void __RPC_STUB IDVBSLocator2_get_DiseqLNBSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_DiseqLNBSource_Proxy(
+    IDVBSLocator2* This,
+    LNB_Source DiseqLNBSourceVal);
+void __RPC_STUB IDVBSLocator2_put_DiseqLNBSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalOscillatorOverrideLow_Proxy(
+    IDVBSLocator2* This,
+    LONG *LocalOscillatorOverrideLowVal);
+void __RPC_STUB IDVBSLocator2_get_LocalOscillatorOverrideLow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalOscillatorOverrideLow_Proxy(
+    IDVBSLocator2* This,
+    LONG LocalOscillatorOverrideLowVal);
+void __RPC_STUB IDVBSLocator2_put_LocalOscillatorOverrideLow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalOscillatorOverrideHigh_Proxy(
+    IDVBSLocator2* This,
+    LONG *LocalOscillatorOverrideHighVal);
+void __RPC_STUB IDVBSLocator2_get_LocalOscillatorOverrideHigh_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalOscillatorOverrideHigh_Proxy(
+    IDVBSLocator2* This,
+    LONG LocalOscillatorOverrideHighVal);
+void __RPC_STUB IDVBSLocator2_put_LocalOscillatorOverrideHigh_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalLNBSwitchOverride_Proxy(
+    IDVBSLocator2* This,
+    LONG *LocalLNBSwitchOverrideVal);
+void __RPC_STUB IDVBSLocator2_get_LocalLNBSwitchOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalLNBSwitchOverride_Proxy(
+    IDVBSLocator2* This,
+    LONG LocalLNBSwitchOverrideVal);
+void __RPC_STUB IDVBSLocator2_put_LocalLNBSwitchOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalSpectralInversionOverride_Proxy(
+    IDVBSLocator2* This,
+    SpectralInversion *LocalSpectralInversionOverrideVal);
+void __RPC_STUB IDVBSLocator2_get_LocalSpectralInversionOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalSpectralInversionOverride_Proxy(
+    IDVBSLocator2* This,
+    SpectralInversion LocalSpectralInversionOverrideVal);
+void __RPC_STUB IDVBSLocator2_put_LocalSpectralInversionOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_SignalRollOff_Proxy(
+    IDVBSLocator2* This,
+    RollOff *RollOffVal);
+void __RPC_STUB IDVBSLocator2_get_SignalRollOff_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_SignalRollOff_Proxy(
+    IDVBSLocator2* This,
+    RollOff RollOffVal);
+void __RPC_STUB IDVBSLocator2_put_SignalRollOff_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_SignalPilot_Proxy(
+    IDVBSLocator2* This,
+    Pilot *PilotVal);
+void __RPC_STUB IDVBSLocator2_get_SignalPilot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_SignalPilot_Proxy(
+    IDVBSLocator2* This,
+    Pilot PilotVal);
+void __RPC_STUB IDVBSLocator2_put_SignalPilot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDVBSLocator2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDVBCLocator interface
+ */
+#ifndef __IDVBCLocator_INTERFACE_DEFINED__
+#define __IDVBCLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDVBCLocator, 0x6e42f36e, 0x1dd2, 0x43c4, 0x9f,0x78, 0x69,0xd2,0x5a,0xe3,0x90,0x34);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6e42f36e-1dd2-43c4-9f78-69d25ae39034")
+IDVBCLocator : public IDigitalLocator
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDVBCLocator, 0x6e42f36e, 0x1dd2, 0x43c4, 0x9f,0x78, 0x69,0xd2,0x5a,0xe3,0x90,0x34)
+#endif
+#else
+typedef struct IDVBCLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDVBCLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDVBCLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDVBCLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDVBCLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDVBCLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDVBCLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDVBCLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IDVBCLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IDVBCLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IDVBCLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IDVBCLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IDVBCLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IDVBCLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IDVBCLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IDVBCLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IDVBCLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IDVBCLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IDVBCLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IDVBCLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IDVBCLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IDVBCLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IDVBCLocator* This,
+        ILocator **NewLocator);
+
+    END_INTERFACE
+} IDVBCLocatorVtbl;
+interface IDVBCLocator {
+    CONST_VTBL IDVBCLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDVBCLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVBCLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVBCLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDVBCLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDVBCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDVBCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDVBCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IDVBCLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IDVBCLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IDVBCLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IDVBCLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IDVBCLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IDVBCLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IDVBCLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IDVBCLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IDVBCLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IDVBCLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IDVBCLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IDVBCLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IDVBCLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IDVBCLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IDVBCLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDVBCLocator_QueryInterface(IDVBCLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDVBCLocator_AddRef(IDVBCLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDVBCLocator_Release(IDVBCLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IDVBCLocator_GetTypeInfoCount(IDVBCLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IDVBCLocator_GetTypeInfo(IDVBCLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IDVBCLocator_GetIDsOfNames(IDVBCLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IDVBCLocator_Invoke(IDVBCLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IDVBCLocator_get_CarrierFrequency(IDVBCLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_CarrierFrequency(IDVBCLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_InnerFEC(IDVBCLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_InnerFEC(IDVBCLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_InnerFECRate(IDVBCLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_InnerFECRate(IDVBCLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_OuterFEC(IDVBCLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_OuterFEC(IDVBCLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_OuterFECRate(IDVBCLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_OuterFECRate(IDVBCLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_Modulation(IDVBCLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_Modulation(IDVBCLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IDVBCLocator_get_SymbolRate(IDVBCLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBCLocator_put_SymbolRate(IDVBCLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IDVBCLocator_Clone(IDVBCLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IDVBCLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IISDBSLocator interface
+ */
+#ifndef __IISDBSLocator_INTERFACE_DEFINED__
+#define __IISDBSLocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IISDBSLocator, 0xc9897087, 0xe29c, 0x473f, 0x9e,0x4b, 0x70,0x72,0x12,0x3d,0xea,0x14);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c9897087-e29c-473f-9e4b-7072123dea14")
+IISDBSLocator : public IDVBSLocator
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IISDBSLocator, 0xc9897087, 0xe29c, 0x473f, 0x9e,0x4b, 0x70,0x72,0x12,0x3d,0xea,0x14)
+#endif
+#else
+typedef struct IISDBSLocatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IISDBSLocator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IISDBSLocator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IISDBSLocator* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IISDBSLocator* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IISDBSLocator* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IISDBSLocator* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IISDBSLocator* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** ILocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
+        IISDBSLocator* This,
+        LONG *Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
+        IISDBSLocator* This,
+        LONG Frequency);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
+        IISDBSLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
+        IISDBSLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
+        IISDBSLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
+        IISDBSLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
+        IISDBSLocator* This,
+        FECMethod *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
+        IISDBSLocator* This,
+        FECMethod FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
+        IISDBSLocator* This,
+        BinaryConvolutionCodeRate *FEC);
+
+    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
+        IISDBSLocator* This,
+        BinaryConvolutionCodeRate FEC);
+
+    HRESULT (STDMETHODCALLTYPE *get_Modulation)(
+        IISDBSLocator* This,
+        ModulationType *Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Modulation)(
+        IISDBSLocator* This,
+        ModulationType Modulation);
+
+    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
+        IISDBSLocator* This,
+        LONG *Rate);
+
+    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
+        IISDBSLocator* This,
+        LONG Rate);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IISDBSLocator* This,
+        ILocator **NewLocator);
+
+    /*** IDVBSLocator methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
+        IISDBSLocator* This,
+        Polarisation *PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
+        IISDBSLocator* This,
+        Polarisation PolarisationVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
+        IISDBSLocator* This,
+        VARIANT_BOOL *WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
+        IISDBSLocator* This,
+        VARIANT_BOOL WestLongitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
+        IISDBSLocator* This,
+        LONG *longitude);
+
+    HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
+        IISDBSLocator* This,
+        LONG longitude);
+
+    HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
+        IISDBSLocator* This,
+        LONG *Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
+        IISDBSLocator* This,
+        LONG Azimuth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Elevation)(
+        IISDBSLocator* This,
+        LONG *Elevation);
+
+    HRESULT (STDMETHODCALLTYPE *put_Elevation)(
+        IISDBSLocator* This,
+        LONG Elevation);
+
+    END_INTERFACE
+} IISDBSLocatorVtbl;
+interface IISDBSLocator {
+    CONST_VTBL IISDBSLocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IISDBSLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IISDBSLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IISDBSLocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IISDBSLocator_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IISDBSLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IISDBSLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IISDBSLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** ILocator methods ***/
+#define IISDBSLocator_get_CarrierFrequency(This,Frequency) (This)->lpVtbl->get_CarrierFrequency(This,Frequency)
+#define IISDBSLocator_put_CarrierFrequency(This,Frequency) (This)->lpVtbl->put_CarrierFrequency(This,Frequency)
+#define IISDBSLocator_get_InnerFEC(This,FEC) (This)->lpVtbl->get_InnerFEC(This,FEC)
+#define IISDBSLocator_put_InnerFEC(This,FEC) (This)->lpVtbl->put_InnerFEC(This,FEC)
+#define IISDBSLocator_get_InnerFECRate(This,FEC) (This)->lpVtbl->get_InnerFECRate(This,FEC)
+#define IISDBSLocator_put_InnerFECRate(This,FEC) (This)->lpVtbl->put_InnerFECRate(This,FEC)
+#define IISDBSLocator_get_OuterFEC(This,FEC) (This)->lpVtbl->get_OuterFEC(This,FEC)
+#define IISDBSLocator_put_OuterFEC(This,FEC) (This)->lpVtbl->put_OuterFEC(This,FEC)
+#define IISDBSLocator_get_OuterFECRate(This,FEC) (This)->lpVtbl->get_OuterFECRate(This,FEC)
+#define IISDBSLocator_put_OuterFECRate(This,FEC) (This)->lpVtbl->put_OuterFECRate(This,FEC)
+#define IISDBSLocator_get_Modulation(This,Modulation) (This)->lpVtbl->get_Modulation(This,Modulation)
+#define IISDBSLocator_put_Modulation(This,Modulation) (This)->lpVtbl->put_Modulation(This,Modulation)
+#define IISDBSLocator_get_SymbolRate(This,Rate) (This)->lpVtbl->get_SymbolRate(This,Rate)
+#define IISDBSLocator_put_SymbolRate(This,Rate) (This)->lpVtbl->put_SymbolRate(This,Rate)
+#define IISDBSLocator_Clone(This,NewLocator) (This)->lpVtbl->Clone(This,NewLocator)
+/*** IDVBSLocator methods ***/
+#define IISDBSLocator_get_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->get_SignalPolarisation(This,PolarisationVal)
+#define IISDBSLocator_put_SignalPolarisation(This,PolarisationVal) (This)->lpVtbl->put_SignalPolarisation(This,PolarisationVal)
+#define IISDBSLocator_get_WestPosition(This,WestLongitude) (This)->lpVtbl->get_WestPosition(This,WestLongitude)
+#define IISDBSLocator_put_WestPosition(This,WestLongitude) (This)->lpVtbl->put_WestPosition(This,WestLongitude)
+#define IISDBSLocator_get_OrbitalPosition(This,longitude) (This)->lpVtbl->get_OrbitalPosition(This,longitude)
+#define IISDBSLocator_put_OrbitalPosition(This,longitude) (This)->lpVtbl->put_OrbitalPosition(This,longitude)
+#define IISDBSLocator_get_Azimuth(This,Azimuth) (This)->lpVtbl->get_Azimuth(This,Azimuth)
+#define IISDBSLocator_put_Azimuth(This,Azimuth) (This)->lpVtbl->put_Azimuth(This,Azimuth)
+#define IISDBSLocator_get_Elevation(This,Elevation) (This)->lpVtbl->get_Elevation(This,Elevation)
+#define IISDBSLocator_put_Elevation(This,Elevation) (This)->lpVtbl->put_Elevation(This,Elevation)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IISDBSLocator_QueryInterface(IISDBSLocator* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IISDBSLocator_AddRef(IISDBSLocator* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IISDBSLocator_Release(IISDBSLocator* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IISDBSLocator_GetTypeInfoCount(IISDBSLocator* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IISDBSLocator_GetTypeInfo(IISDBSLocator* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IISDBSLocator_GetIDsOfNames(IISDBSLocator* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IISDBSLocator_Invoke(IISDBSLocator* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** ILocator methods ***/
+static FORCEINLINE HRESULT IISDBSLocator_get_CarrierFrequency(IISDBSLocator* This,LONG *Frequency) {
+    return This->lpVtbl->get_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_CarrierFrequency(IISDBSLocator* This,LONG Frequency) {
+    return This->lpVtbl->put_CarrierFrequency(This,Frequency);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_InnerFEC(IISDBSLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_InnerFEC(IISDBSLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_InnerFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_InnerFECRate(IISDBSLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_InnerFECRate(IISDBSLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_InnerFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_OuterFEC(IISDBSLocator* This,FECMethod *FEC) {
+    return This->lpVtbl->get_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_OuterFEC(IISDBSLocator* This,FECMethod FEC) {
+    return This->lpVtbl->put_OuterFEC(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_OuterFECRate(IISDBSLocator* This,BinaryConvolutionCodeRate *FEC) {
+    return This->lpVtbl->get_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_OuterFECRate(IISDBSLocator* This,BinaryConvolutionCodeRate FEC) {
+    return This->lpVtbl->put_OuterFECRate(This,FEC);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_Modulation(IISDBSLocator* This,ModulationType *Modulation) {
+    return This->lpVtbl->get_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_Modulation(IISDBSLocator* This,ModulationType Modulation) {
+    return This->lpVtbl->put_Modulation(This,Modulation);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_SymbolRate(IISDBSLocator* This,LONG *Rate) {
+    return This->lpVtbl->get_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_SymbolRate(IISDBSLocator* This,LONG Rate) {
+    return This->lpVtbl->put_SymbolRate(This,Rate);
+}
+static FORCEINLINE HRESULT IISDBSLocator_Clone(IISDBSLocator* This,ILocator **NewLocator) {
+    return This->lpVtbl->Clone(This,NewLocator);
+}
+/*** IDVBSLocator methods ***/
+static FORCEINLINE HRESULT IISDBSLocator_get_SignalPolarisation(IISDBSLocator* This,Polarisation *PolarisationVal) {
+    return This->lpVtbl->get_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_SignalPolarisation(IISDBSLocator* This,Polarisation PolarisationVal) {
+    return This->lpVtbl->put_SignalPolarisation(This,PolarisationVal);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_WestPosition(IISDBSLocator* This,VARIANT_BOOL *WestLongitude) {
+    return This->lpVtbl->get_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_WestPosition(IISDBSLocator* This,VARIANT_BOOL WestLongitude) {
+    return This->lpVtbl->put_WestPosition(This,WestLongitude);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_OrbitalPosition(IISDBSLocator* This,LONG *longitude) {
+    return This->lpVtbl->get_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_OrbitalPosition(IISDBSLocator* This,LONG longitude) {
+    return This->lpVtbl->put_OrbitalPosition(This,longitude);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_Azimuth(IISDBSLocator* This,LONG *Azimuth) {
+    return This->lpVtbl->get_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_Azimuth(IISDBSLocator* This,LONG Azimuth) {
+    return This->lpVtbl->put_Azimuth(This,Azimuth);
+}
+static FORCEINLINE HRESULT IISDBSLocator_get_Elevation(IISDBSLocator* This,LONG *Elevation) {
+    return This->lpVtbl->get_Elevation(This,Elevation);
+}
+static FORCEINLINE HRESULT IISDBSLocator_put_Elevation(IISDBSLocator* This,LONG Elevation) {
+    return This->lpVtbl->put_Elevation(This,Elevation);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IISDBSLocator_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESEvent interface
+ */
+#ifndef __IESEvent_INTERFACE_DEFINED__
+#define __IESEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESEvent, 0x1f0e5357, 0xaf43, 0x44e6, 0x85,0x47, 0x65,0x4c,0x64,0x51,0x45,0xd2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1f0e5357-af43-44e6-8547-654c645145d2")
+IESEvent : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetEventId(
+        DWORD *pdwEventId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEventType(
+        GUID *pguidEventType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCompletionStatus(
+        DWORD dwResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetData(
+        SAFEARRAY **pbData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStringData(
+        BSTR *pbstrData) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESEvent, 0x1f0e5357, 0xaf43, 0x44e6, 0x85,0x47, 0x65,0x4c,0x64,0x51,0x45,0xd2)
+#endif
+#else
+typedef struct IESEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESEvent* This,
+        BSTR *pbstrData);
+
+    END_INTERFACE
+} IESEventVtbl;
+interface IESEvent {
+    CONST_VTBL IESEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESEvent_QueryInterface(IESEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESEvent_AddRef(IESEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESEvent_Release(IESEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESEvent_GetEventId(IESEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESEvent_GetEventType(IESEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESEvent_SetCompletionStatus(IESEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESEvent_GetData(IESEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESEvent_GetStringData(IESEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESEvent_GetEventId_Proxy(
+    IESEvent* This,
+    DWORD *pdwEventId);
+void __RPC_STUB IESEvent_GetEventId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEvent_GetEventType_Proxy(
+    IESEvent* This,
+    GUID *pguidEventType);
+void __RPC_STUB IESEvent_GetEventType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEvent_SetCompletionStatus_Proxy(
+    IESEvent* This,
+    DWORD dwResult);
+void __RPC_STUB IESEvent_SetCompletionStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEvent_GetData_Proxy(
+    IESEvent* This,
+    SAFEARRAY **pbData);
+void __RPC_STUB IESEvent_GetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEvent_GetStringData_Proxy(
+    IESEvent* This,
+    BSTR *pbstrData);
+void __RPC_STUB IESEvent_GetStringData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESOpenMmiEvent interface
+ */
+#ifndef __IESOpenMmiEvent_INTERFACE_DEFINED__
+#define __IESOpenMmiEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESOpenMmiEvent, 0xba4b6526, 0x1a35, 0x4635, 0x8b,0x56, 0x3e,0xc6,0x12,0x74,0x6a,0x8c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ba4b6526-1a35-4635-8b56-3ec612746a8c")
+IESOpenMmiEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDialogNumber(
+        DWORD *pDialogRequest,
+        DWORD *pDialogNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDialogType(
+        GUID *guidDialogType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDialogData(
+        SAFEARRAY **pbData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDialogStringData(
+        BSTR *pbstrBaseUrl,
+        BSTR *pbstrData) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESOpenMmiEvent, 0xba4b6526, 0x1a35, 0x4635, 0x8b,0x56, 0x3e,0xc6,0x12,0x74,0x6a,0x8c)
+#endif
+#else
+typedef struct IESOpenMmiEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESOpenMmiEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESOpenMmiEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESOpenMmiEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESOpenMmiEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESOpenMmiEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESOpenMmiEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESOpenMmiEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESOpenMmiEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESOpenMmiEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDialogNumber)(
+        IESOpenMmiEvent* This,
+        DWORD *pDialogRequest,
+        DWORD *pDialogNumber);
+
+    HRESULT (STDMETHODCALLTYPE *GetDialogType)(
+        IESOpenMmiEvent* This,
+        GUID *guidDialogType);
+
+    HRESULT (STDMETHODCALLTYPE *GetDialogData)(
+        IESOpenMmiEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetDialogStringData)(
+        IESOpenMmiEvent* This,
+        BSTR *pbstrBaseUrl,
+        BSTR *pbstrData);
+
+    END_INTERFACE
+} IESOpenMmiEventVtbl;
+interface IESOpenMmiEvent {
+    CONST_VTBL IESOpenMmiEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESOpenMmiEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESOpenMmiEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESOpenMmiEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESOpenMmiEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESOpenMmiEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESOpenMmiEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESOpenMmiEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESOpenMmiEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESOpenMmiEvent methods ***/
+#define IESOpenMmiEvent_GetDialogNumber(This,pDialogRequest,pDialogNumber) (This)->lpVtbl->GetDialogNumber(This,pDialogRequest,pDialogNumber)
+#define IESOpenMmiEvent_GetDialogType(This,guidDialogType) (This)->lpVtbl->GetDialogType(This,guidDialogType)
+#define IESOpenMmiEvent_GetDialogData(This,pbData) (This)->lpVtbl->GetDialogData(This,pbData)
+#define IESOpenMmiEvent_GetDialogStringData(This,pbstrBaseUrl,pbstrData) (This)->lpVtbl->GetDialogStringData(This,pbstrBaseUrl,pbstrData)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESOpenMmiEvent_QueryInterface(IESOpenMmiEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESOpenMmiEvent_AddRef(IESOpenMmiEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESOpenMmiEvent_Release(IESOpenMmiEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetEventId(IESOpenMmiEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetEventType(IESOpenMmiEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_SetCompletionStatus(IESOpenMmiEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetData(IESOpenMmiEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetStringData(IESOpenMmiEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESOpenMmiEvent methods ***/
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetDialogNumber(IESOpenMmiEvent* This,DWORD *pDialogRequest,DWORD *pDialogNumber) {
+    return This->lpVtbl->GetDialogNumber(This,pDialogRequest,pDialogNumber);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetDialogType(IESOpenMmiEvent* This,GUID *guidDialogType) {
+    return This->lpVtbl->GetDialogType(This,guidDialogType);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetDialogData(IESOpenMmiEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetDialogData(This,pbData);
+}
+static FORCEINLINE HRESULT IESOpenMmiEvent_GetDialogStringData(IESOpenMmiEvent* This,BSTR *pbstrBaseUrl,BSTR *pbstrData) {
+    return This->lpVtbl->GetDialogStringData(This,pbstrBaseUrl,pbstrData);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogNumber_Proxy(
+    IESOpenMmiEvent* This,
+    DWORD *pDialogRequest,
+    DWORD *pDialogNumber);
+void __RPC_STUB IESOpenMmiEvent_GetDialogNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogType_Proxy(
+    IESOpenMmiEvent* This,
+    GUID *guidDialogType);
+void __RPC_STUB IESOpenMmiEvent_GetDialogType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogData_Proxy(
+    IESOpenMmiEvent* This,
+    SAFEARRAY **pbData);
+void __RPC_STUB IESOpenMmiEvent_GetDialogData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogStringData_Proxy(
+    IESOpenMmiEvent* This,
+    BSTR *pbstrBaseUrl,
+    BSTR *pbstrData);
+void __RPC_STUB IESOpenMmiEvent_GetDialogStringData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESOpenMmiEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESCloseMmiEvent interface
+ */
+#ifndef __IESCloseMmiEvent_INTERFACE_DEFINED__
+#define __IESCloseMmiEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESCloseMmiEvent, 0x6b80e96f, 0x55e2, 0x45aa, 0xb7,0x54, 0x0c,0x23,0xc8,0xe7,0xd5,0xc1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6b80e96f-55e2-45aa-b754-0c23c8e7d5c1")
+IESCloseMmiEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDialogNumber(
+        DWORD *pDialogNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESCloseMmiEvent, 0x6b80e96f, 0x55e2, 0x45aa, 0xb7,0x54, 0x0c,0x23,0xc8,0xe7,0xd5,0xc1)
+#endif
+#else
+typedef struct IESCloseMmiEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESCloseMmiEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESCloseMmiEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESCloseMmiEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESCloseMmiEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESCloseMmiEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESCloseMmiEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESCloseMmiEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESCloseMmiEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESCloseMmiEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDialogNumber)(
+        IESCloseMmiEvent* This,
+        DWORD *pDialogNumber);
+
+    END_INTERFACE
+} IESCloseMmiEventVtbl;
+interface IESCloseMmiEvent {
+    CONST_VTBL IESCloseMmiEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESCloseMmiEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESCloseMmiEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESCloseMmiEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESCloseMmiEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESCloseMmiEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESCloseMmiEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESCloseMmiEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESCloseMmiEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESCloseMmiEvent methods ***/
+#define IESCloseMmiEvent_GetDialogNumber(This,pDialogNumber) (This)->lpVtbl->GetDialogNumber(This,pDialogNumber)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESCloseMmiEvent_QueryInterface(IESCloseMmiEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESCloseMmiEvent_AddRef(IESCloseMmiEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESCloseMmiEvent_Release(IESCloseMmiEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESCloseMmiEvent_GetEventId(IESCloseMmiEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESCloseMmiEvent_GetEventType(IESCloseMmiEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESCloseMmiEvent_SetCompletionStatus(IESCloseMmiEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESCloseMmiEvent_GetData(IESCloseMmiEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESCloseMmiEvent_GetStringData(IESCloseMmiEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESCloseMmiEvent methods ***/
+static FORCEINLINE HRESULT IESCloseMmiEvent_GetDialogNumber(IESCloseMmiEvent* This,DWORD *pDialogNumber) {
+    return This->lpVtbl->GetDialogNumber(This,pDialogNumber);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESCloseMmiEvent_GetDialogNumber_Proxy(
+    IESCloseMmiEvent* This,
+    DWORD *pDialogNumber);
+void __RPC_STUB IESCloseMmiEvent_GetDialogNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESCloseMmiEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESValueUpdatedEvent interface
+ */
+#ifndef __IESValueUpdatedEvent_INTERFACE_DEFINED__
+#define __IESValueUpdatedEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESValueUpdatedEvent, 0x8a24c46e, 0xbb63, 0x4664, 0x86,0x02, 0x5d,0x9c,0x71,0x8c,0x14,0x6d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8a24c46e-bb63-4664-8602-5d9c718c146d")
+IESValueUpdatedEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetValueNames(
+        SAFEARRAY **pbstrNames) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESValueUpdatedEvent, 0x8a24c46e, 0xbb63, 0x4664, 0x86,0x02, 0x5d,0x9c,0x71,0x8c,0x14,0x6d)
+#endif
+#else
+typedef struct IESValueUpdatedEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESValueUpdatedEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESValueUpdatedEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESValueUpdatedEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESValueUpdatedEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESValueUpdatedEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESValueUpdatedEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESValueUpdatedEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESValueUpdatedEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESValueUpdatedEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetValueNames)(
+        IESValueUpdatedEvent* This,
+        SAFEARRAY **pbstrNames);
+
+    END_INTERFACE
+} IESValueUpdatedEventVtbl;
+interface IESValueUpdatedEvent {
+    CONST_VTBL IESValueUpdatedEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESValueUpdatedEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESValueUpdatedEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESValueUpdatedEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESValueUpdatedEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESValueUpdatedEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESValueUpdatedEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESValueUpdatedEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESValueUpdatedEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESValueUpdatedEvent methods ***/
+#define IESValueUpdatedEvent_GetValueNames(This,pbstrNames) (This)->lpVtbl->GetValueNames(This,pbstrNames)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESValueUpdatedEvent_QueryInterface(IESValueUpdatedEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESValueUpdatedEvent_AddRef(IESValueUpdatedEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESValueUpdatedEvent_Release(IESValueUpdatedEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESValueUpdatedEvent_GetEventId(IESValueUpdatedEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESValueUpdatedEvent_GetEventType(IESValueUpdatedEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESValueUpdatedEvent_SetCompletionStatus(IESValueUpdatedEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESValueUpdatedEvent_GetData(IESValueUpdatedEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESValueUpdatedEvent_GetStringData(IESValueUpdatedEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESValueUpdatedEvent methods ***/
+static FORCEINLINE HRESULT IESValueUpdatedEvent_GetValueNames(IESValueUpdatedEvent* This,SAFEARRAY **pbstrNames) {
+    return This->lpVtbl->GetValueNames(This,pbstrNames);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESValueUpdatedEvent_GetValueNames_Proxy(
+    IESValueUpdatedEvent* This,
+    SAFEARRAY **pbstrNames);
+void __RPC_STUB IESValueUpdatedEvent_GetValueNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESValueUpdatedEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESRequestTunerEvent interface
+ */
+#ifndef __IESRequestTunerEvent_INTERFACE_DEFINED__
+#define __IESRequestTunerEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESRequestTunerEvent, 0x54c7a5e8, 0xc3bb, 0x4f51, 0xaf,0x14, 0xe0,0xe2,0xc0,0xe3,0x4c,0x6d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("54c7a5e8-c3bb-4f51-af14-e0e2c0e34c6d")
+IESRequestTunerEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPriority(
+        BYTE *pbyPriority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReason(
+        BYTE *pbyReason) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetConsequences(
+        BYTE *pbyConsequences) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEstimatedTime(
+        DWORD *pdwEstimatedTime) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESRequestTunerEvent, 0x54c7a5e8, 0xc3bb, 0x4f51, 0xaf,0x14, 0xe0,0xe2,0xc0,0xe3,0x4c,0x6d)
+#endif
+#else
+typedef struct IESRequestTunerEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESRequestTunerEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESRequestTunerEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESRequestTunerEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESRequestTunerEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESRequestTunerEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESRequestTunerEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESRequestTunerEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESRequestTunerEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESRequestTunerEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IESRequestTunerEvent* This,
+        BYTE *pbyPriority);
+
+    HRESULT (STDMETHODCALLTYPE *GetReason)(
+        IESRequestTunerEvent* This,
+        BYTE *pbyReason);
+
+    HRESULT (STDMETHODCALLTYPE *GetConsequences)(
+        IESRequestTunerEvent* This,
+        BYTE *pbyConsequences);
+
+    HRESULT (STDMETHODCALLTYPE *GetEstimatedTime)(
+        IESRequestTunerEvent* This,
+        DWORD *pdwEstimatedTime);
+
+    END_INTERFACE
+} IESRequestTunerEventVtbl;
+interface IESRequestTunerEvent {
+    CONST_VTBL IESRequestTunerEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESRequestTunerEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESRequestTunerEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESRequestTunerEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESRequestTunerEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESRequestTunerEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESRequestTunerEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESRequestTunerEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESRequestTunerEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESRequestTunerEvent methods ***/
+#define IESRequestTunerEvent_GetPriority(This,pbyPriority) (This)->lpVtbl->GetPriority(This,pbyPriority)
+#define IESRequestTunerEvent_GetReason(This,pbyReason) (This)->lpVtbl->GetReason(This,pbyReason)
+#define IESRequestTunerEvent_GetConsequences(This,pbyConsequences) (This)->lpVtbl->GetConsequences(This,pbyConsequences)
+#define IESRequestTunerEvent_GetEstimatedTime(This,pdwEstimatedTime) (This)->lpVtbl->GetEstimatedTime(This,pdwEstimatedTime)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESRequestTunerEvent_QueryInterface(IESRequestTunerEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESRequestTunerEvent_AddRef(IESRequestTunerEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESRequestTunerEvent_Release(IESRequestTunerEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetEventId(IESRequestTunerEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetEventType(IESRequestTunerEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_SetCompletionStatus(IESRequestTunerEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetData(IESRequestTunerEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetStringData(IESRequestTunerEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESRequestTunerEvent methods ***/
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetPriority(IESRequestTunerEvent* This,BYTE *pbyPriority) {
+    return This->lpVtbl->GetPriority(This,pbyPriority);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetReason(IESRequestTunerEvent* This,BYTE *pbyReason) {
+    return This->lpVtbl->GetReason(This,pbyReason);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetConsequences(IESRequestTunerEvent* This,BYTE *pbyConsequences) {
+    return This->lpVtbl->GetConsequences(This,pbyConsequences);
+}
+static FORCEINLINE HRESULT IESRequestTunerEvent_GetEstimatedTime(IESRequestTunerEvent* This,DWORD *pdwEstimatedTime) {
+    return This->lpVtbl->GetEstimatedTime(This,pdwEstimatedTime);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetPriority_Proxy(
+    IESRequestTunerEvent* This,
+    BYTE *pbyPriority);
+void __RPC_STUB IESRequestTunerEvent_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetReason_Proxy(
+    IESRequestTunerEvent* This,
+    BYTE *pbyReason);
+void __RPC_STUB IESRequestTunerEvent_GetReason_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetConsequences_Proxy(
+    IESRequestTunerEvent* This,
+    BYTE *pbyConsequences);
+void __RPC_STUB IESRequestTunerEvent_GetConsequences_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetEstimatedTime_Proxy(
+    IESRequestTunerEvent* This,
+    DWORD *pdwEstimatedTime);
+void __RPC_STUB IESRequestTunerEvent_GetEstimatedTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESRequestTunerEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESIsdbCasResponseEvent interface
+ */
+#ifndef __IESIsdbCasResponseEvent_INTERFACE_DEFINED__
+#define __IESIsdbCasResponseEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESIsdbCasResponseEvent, 0x2017cb03, 0xdc0f, 0x4c24, 0x83,0xca, 0x36,0x30,0x7b,0x2c,0xd1,0x9f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2017cb03-dc0f-4c24-83ca-36307b2cd19f")
+IESIsdbCasResponseEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetRequestId(
+        DWORD *pRequestId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStatus(
+        DWORD *pStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDataLength(
+        DWORD *pRequestLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetResponseData(
+        SAFEARRAY **pbData) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESIsdbCasResponseEvent, 0x2017cb03, 0xdc0f, 0x4c24, 0x83,0xca, 0x36,0x30,0x7b,0x2c,0xd1,0x9f)
+#endif
+#else
+typedef struct IESIsdbCasResponseEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESIsdbCasResponseEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESIsdbCasResponseEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESIsdbCasResponseEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESIsdbCasResponseEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESIsdbCasResponseEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESIsdbCasResponseEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESIsdbCasResponseEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESIsdbCasResponseEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESIsdbCasResponseEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetRequestId)(
+        IESIsdbCasResponseEvent* This,
+        DWORD *pRequestId);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatus)(
+        IESIsdbCasResponseEvent* This,
+        DWORD *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetDataLength)(
+        IESIsdbCasResponseEvent* This,
+        DWORD *pRequestLength);
+
+    HRESULT (STDMETHODCALLTYPE *GetResponseData)(
+        IESIsdbCasResponseEvent* This,
+        SAFEARRAY **pbData);
+
+    END_INTERFACE
+} IESIsdbCasResponseEventVtbl;
+interface IESIsdbCasResponseEvent {
+    CONST_VTBL IESIsdbCasResponseEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESIsdbCasResponseEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESIsdbCasResponseEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESIsdbCasResponseEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESIsdbCasResponseEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESIsdbCasResponseEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESIsdbCasResponseEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESIsdbCasResponseEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESIsdbCasResponseEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESIsdbCasResponseEvent methods ***/
+#define IESIsdbCasResponseEvent_GetRequestId(This,pRequestId) (This)->lpVtbl->GetRequestId(This,pRequestId)
+#define IESIsdbCasResponseEvent_GetStatus(This,pStatus) (This)->lpVtbl->GetStatus(This,pStatus)
+#define IESIsdbCasResponseEvent_GetDataLength(This,pRequestLength) (This)->lpVtbl->GetDataLength(This,pRequestLength)
+#define IESIsdbCasResponseEvent_GetResponseData(This,pbData) (This)->lpVtbl->GetResponseData(This,pbData)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_QueryInterface(IESIsdbCasResponseEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESIsdbCasResponseEvent_AddRef(IESIsdbCasResponseEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESIsdbCasResponseEvent_Release(IESIsdbCasResponseEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetEventId(IESIsdbCasResponseEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetEventType(IESIsdbCasResponseEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_SetCompletionStatus(IESIsdbCasResponseEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetData(IESIsdbCasResponseEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetStringData(IESIsdbCasResponseEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESIsdbCasResponseEvent methods ***/
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetRequestId(IESIsdbCasResponseEvent* This,DWORD *pRequestId) {
+    return This->lpVtbl->GetRequestId(This,pRequestId);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetStatus(IESIsdbCasResponseEvent* This,DWORD *pStatus) {
+    return This->lpVtbl->GetStatus(This,pStatus);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetDataLength(IESIsdbCasResponseEvent* This,DWORD *pRequestLength) {
+    return This->lpVtbl->GetDataLength(This,pRequestLength);
+}
+static FORCEINLINE HRESULT IESIsdbCasResponseEvent_GetResponseData(IESIsdbCasResponseEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetResponseData(This,pbData);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetRequestId_Proxy(
+    IESIsdbCasResponseEvent* This,
+    DWORD *pRequestId);
+void __RPC_STUB IESIsdbCasResponseEvent_GetRequestId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetStatus_Proxy(
+    IESIsdbCasResponseEvent* This,
+    DWORD *pStatus);
+void __RPC_STUB IESIsdbCasResponseEvent_GetStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetDataLength_Proxy(
+    IESIsdbCasResponseEvent* This,
+    DWORD *pRequestLength);
+void __RPC_STUB IESIsdbCasResponseEvent_GetDataLength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetResponseData_Proxy(
+    IESIsdbCasResponseEvent* This,
+    SAFEARRAY **pbData);
+void __RPC_STUB IESIsdbCasResponseEvent_GetResponseData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESIsdbCasResponseEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IGpnvsCommonBase interface
+ */
+#ifndef __IGpnvsCommonBase_INTERFACE_DEFINED__
+#define __IGpnvsCommonBase_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IGpnvsCommonBase, 0x907e0b5c, 0xe42d, 0x4f04, 0x91,0xf0, 0x26,0xf4,0x01,0xf3,0x69,0x07);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("907e0b5c-e42d-4f04-91f0-26f401f36907")
+IGpnvsCommonBase : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetValueUpdateName(
+        BSTR *pbstrName) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IGpnvsCommonBase, 0x907e0b5c, 0xe42d, 0x4f04, 0x91,0xf0, 0x26,0xf4,0x01,0xf3,0x69,0x07)
+#endif
+#else
+typedef struct IGpnvsCommonBaseVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IGpnvsCommonBase* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IGpnvsCommonBase* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IGpnvsCommonBase* This);
+
+    /*** IGpnvsCommonBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetValueUpdateName)(
+        IGpnvsCommonBase* This,
+        BSTR *pbstrName);
+
+    END_INTERFACE
+} IGpnvsCommonBaseVtbl;
+interface IGpnvsCommonBase {
+    CONST_VTBL IGpnvsCommonBaseVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IGpnvsCommonBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IGpnvsCommonBase_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IGpnvsCommonBase_Release(This) (This)->lpVtbl->Release(This)
+/*** IGpnvsCommonBase methods ***/
+#define IGpnvsCommonBase_GetValueUpdateName(This,pbstrName) (This)->lpVtbl->GetValueUpdateName(This,pbstrName)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IGpnvsCommonBase_QueryInterface(IGpnvsCommonBase* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IGpnvsCommonBase_AddRef(IGpnvsCommonBase* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IGpnvsCommonBase_Release(IGpnvsCommonBase* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IGpnvsCommonBase methods ***/
+static FORCEINLINE HRESULT IGpnvsCommonBase_GetValueUpdateName(IGpnvsCommonBase* This,BSTR *pbstrName) {
+    return This->lpVtbl->GetValueUpdateName(This,pbstrName);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IGpnvsCommonBase_GetValueUpdateName_Proxy(
+    IGpnvsCommonBase* This,
+    BSTR *pbstrName);
+void __RPC_STUB IGpnvsCommonBase_GetValueUpdateName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IGpnvsCommonBase_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESEventFactory interface
+ */
+#ifndef __IESEventFactory_INTERFACE_DEFINED__
+#define __IESEventFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESEventFactory, 0x506a09b8, 0x7f86, 0x4e04, 0xac,0x05, 0x33,0x03,0xbf,0xe8,0xfc,0x49);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("506a09b8-7f86-4e04-ac05-3303bfe8fc49")
+IESEventFactory : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateESEvent(
+        IUnknown *pServiceProvider,
+        DWORD dwEventId,
+        GUID guidEventType,
+        DWORD dwEventDataLength,
+        BYTE *pEventData,
+        BSTR bstrBaseUrl,
+        IUnknown *pInitContext,
+        IESEvent **ppESEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESEventFactory, 0x506a09b8, 0x7f86, 0x4e04, 0xac,0x05, 0x33,0x03,0xbf,0xe8,0xfc,0x49)
+#endif
+#else
+typedef struct IESEventFactoryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESEventFactory* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESEventFactory* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESEventFactory* This);
+
+    /*** IESEventFactory methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateESEvent)(
+        IESEventFactory* This,
+        IUnknown *pServiceProvider,
+        DWORD dwEventId,
+        GUID guidEventType,
+        DWORD dwEventDataLength,
+        BYTE *pEventData,
+        BSTR bstrBaseUrl,
+        IUnknown *pInitContext,
+        IESEvent **ppESEvent);
+
+    END_INTERFACE
+} IESEventFactoryVtbl;
+interface IESEventFactory {
+    CONST_VTBL IESEventFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESEventFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESEventFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESEventFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEventFactory methods ***/
+#define IESEventFactory_CreateESEvent(This,pServiceProvider,dwEventId,guidEventType,dwEventDataLength,pEventData,bstrBaseUrl,pInitContext,ppESEvent) (This)->lpVtbl->CreateESEvent(This,pServiceProvider,dwEventId,guidEventType,dwEventDataLength,pEventData,bstrBaseUrl,pInitContext,ppESEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESEventFactory_QueryInterface(IESEventFactory* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESEventFactory_AddRef(IESEventFactory* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESEventFactory_Release(IESEventFactory* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEventFactory methods ***/
+static FORCEINLINE HRESULT IESEventFactory_CreateESEvent(IESEventFactory* This,IUnknown *pServiceProvider,DWORD dwEventId,GUID guidEventType,DWORD dwEventDataLength,BYTE *pEventData,BSTR bstrBaseUrl,IUnknown *pInitContext,IESEvent **ppESEvent) {
+    return This->lpVtbl->CreateESEvent(This,pServiceProvider,dwEventId,guidEventType,dwEventDataLength,pEventData,bstrBaseUrl,pInitContext,ppESEvent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESEventFactory_CreateESEvent_Proxy(
+    IESEventFactory* This,
+    IUnknown *pServiceProvider,
+    DWORD dwEventId,
+    GUID guidEventType,
+    DWORD dwEventDataLength,
+    BYTE *pEventData,
+    BSTR bstrBaseUrl,
+    IUnknown *pInitContext,
+    IESEvent **ppESEvent);
+void __RPC_STUB IESEventFactory_CreateESEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESEventFactory_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESLicenseRenewalResultEvent interface
+ */
+#ifndef __IESLicenseRenewalResultEvent_INTERFACE_DEFINED__
+#define __IESLicenseRenewalResultEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESLicenseRenewalResultEvent, 0xd5a48ef5, 0xa81b, 0x4df0, 0xac,0xaa, 0x5e,0x35,0xe7,0xea,0x45,0xd4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d5a48ef5-a81b-4df0-acaa-5e35e7ea45d4")
+IESLicenseRenewalResultEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCallersId(
+        DWORD *pdwCallersId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileName(
+        BSTR *pbstrFilename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRenewalSuccessful(
+        WINBOOL *pfRenewalSuccessful) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsCheckEntitlementCallRequired(
+        WINBOOL *pfCheckEntTokenCallNeeded) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDescrambledStatus(
+        DWORD *pDescrambledStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenewalResultCode(
+        DWORD *pdwRenewalResultCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCASFailureCode(
+        DWORD *pdwCASFailureCode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenewalHResult(
+        HRESULT *phr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEntitlementTokenLength(
+        DWORD *pdwLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEntitlementToken(
+        SAFEARRAY **pbData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExpiryDate(
+        DWORD64 *pqwExpiryDate) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESLicenseRenewalResultEvent, 0xd5a48ef5, 0xa81b, 0x4df0, 0xac,0xaa, 0x5e,0x35,0xe7,0xea,0x45,0xd4)
+#endif
+#else
+typedef struct IESLicenseRenewalResultEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESLicenseRenewalResultEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESLicenseRenewalResultEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESLicenseRenewalResultEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESLicenseRenewalResultEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESLicenseRenewalResultEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESLicenseRenewalResultEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESLicenseRenewalResultEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCallersId)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pdwCallersId);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileName)(
+        IESLicenseRenewalResultEvent* This,
+        BSTR *pbstrFilename);
+
+    HRESULT (STDMETHODCALLTYPE *IsRenewalSuccessful)(
+        IESLicenseRenewalResultEvent* This,
+        WINBOOL *pfRenewalSuccessful);
+
+    HRESULT (STDMETHODCALLTYPE *IsCheckEntitlementCallRequired)(
+        IESLicenseRenewalResultEvent* This,
+        WINBOOL *pfCheckEntTokenCallNeeded);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescrambledStatus)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pDescrambledStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenewalResultCode)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pdwRenewalResultCode);
+
+    HRESULT (STDMETHODCALLTYPE *GetCASFailureCode)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pdwCASFailureCode);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenewalHResult)(
+        IESLicenseRenewalResultEvent* This,
+        HRESULT *phr);
+
+    HRESULT (STDMETHODCALLTYPE *GetEntitlementTokenLength)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD *pdwLength);
+
+    HRESULT (STDMETHODCALLTYPE *GetEntitlementToken)(
+        IESLicenseRenewalResultEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetExpiryDate)(
+        IESLicenseRenewalResultEvent* This,
+        DWORD64 *pqwExpiryDate);
+
+    END_INTERFACE
+} IESLicenseRenewalResultEventVtbl;
+interface IESLicenseRenewalResultEvent {
+    CONST_VTBL IESLicenseRenewalResultEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESLicenseRenewalResultEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESLicenseRenewalResultEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESLicenseRenewalResultEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESLicenseRenewalResultEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESLicenseRenewalResultEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESLicenseRenewalResultEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESLicenseRenewalResultEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESLicenseRenewalResultEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESLicenseRenewalResultEvent methods ***/
+#define IESLicenseRenewalResultEvent_GetCallersId(This,pdwCallersId) (This)->lpVtbl->GetCallersId(This,pdwCallersId)
+#define IESLicenseRenewalResultEvent_GetFileName(This,pbstrFilename) (This)->lpVtbl->GetFileName(This,pbstrFilename)
+#define IESLicenseRenewalResultEvent_IsRenewalSuccessful(This,pfRenewalSuccessful) (This)->lpVtbl->IsRenewalSuccessful(This,pfRenewalSuccessful)
+#define IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired(This,pfCheckEntTokenCallNeeded) (This)->lpVtbl->IsCheckEntitlementCallRequired(This,pfCheckEntTokenCallNeeded)
+#define IESLicenseRenewalResultEvent_GetDescrambledStatus(This,pDescrambledStatus) (This)->lpVtbl->GetDescrambledStatus(This,pDescrambledStatus)
+#define IESLicenseRenewalResultEvent_GetRenewalResultCode(This,pdwRenewalResultCode) (This)->lpVtbl->GetRenewalResultCode(This,pdwRenewalResultCode)
+#define IESLicenseRenewalResultEvent_GetCASFailureCode(This,pdwCASFailureCode) (This)->lpVtbl->GetCASFailureCode(This,pdwCASFailureCode)
+#define IESLicenseRenewalResultEvent_GetRenewalHResult(This,phr) (This)->lpVtbl->GetRenewalHResult(This,phr)
+#define IESLicenseRenewalResultEvent_GetEntitlementTokenLength(This,pdwLength) (This)->lpVtbl->GetEntitlementTokenLength(This,pdwLength)
+#define IESLicenseRenewalResultEvent_GetEntitlementToken(This,pbData) (This)->lpVtbl->GetEntitlementToken(This,pbData)
+#define IESLicenseRenewalResultEvent_GetExpiryDate(This,pqwExpiryDate) (This)->lpVtbl->GetExpiryDate(This,pqwExpiryDate)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_QueryInterface(IESLicenseRenewalResultEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESLicenseRenewalResultEvent_AddRef(IESLicenseRenewalResultEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESLicenseRenewalResultEvent_Release(IESLicenseRenewalResultEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetEventId(IESLicenseRenewalResultEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetEventType(IESLicenseRenewalResultEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_SetCompletionStatus(IESLicenseRenewalResultEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetData(IESLicenseRenewalResultEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetStringData(IESLicenseRenewalResultEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESLicenseRenewalResultEvent methods ***/
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetCallersId(IESLicenseRenewalResultEvent* This,DWORD *pdwCallersId) {
+    return This->lpVtbl->GetCallersId(This,pdwCallersId);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetFileName(IESLicenseRenewalResultEvent* This,BSTR *pbstrFilename) {
+    return This->lpVtbl->GetFileName(This,pbstrFilename);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_IsRenewalSuccessful(IESLicenseRenewalResultEvent* This,WINBOOL *pfRenewalSuccessful) {
+    return This->lpVtbl->IsRenewalSuccessful(This,pfRenewalSuccessful);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired(IESLicenseRenewalResultEvent* This,WINBOOL *pfCheckEntTokenCallNeeded) {
+    return This->lpVtbl->IsCheckEntitlementCallRequired(This,pfCheckEntTokenCallNeeded);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetDescrambledStatus(IESLicenseRenewalResultEvent* This,DWORD *pDescrambledStatus) {
+    return This->lpVtbl->GetDescrambledStatus(This,pDescrambledStatus);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetRenewalResultCode(IESLicenseRenewalResultEvent* This,DWORD *pdwRenewalResultCode) {
+    return This->lpVtbl->GetRenewalResultCode(This,pdwRenewalResultCode);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetCASFailureCode(IESLicenseRenewalResultEvent* This,DWORD *pdwCASFailureCode) {
+    return This->lpVtbl->GetCASFailureCode(This,pdwCASFailureCode);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetRenewalHResult(IESLicenseRenewalResultEvent* This,HRESULT *phr) {
+    return This->lpVtbl->GetRenewalHResult(This,phr);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetEntitlementTokenLength(IESLicenseRenewalResultEvent* This,DWORD *pdwLength) {
+    return This->lpVtbl->GetEntitlementTokenLength(This,pdwLength);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetEntitlementToken(IESLicenseRenewalResultEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetEntitlementToken(This,pbData);
+}
+static FORCEINLINE HRESULT IESLicenseRenewalResultEvent_GetExpiryDate(IESLicenseRenewalResultEvent* This,DWORD64 *pqwExpiryDate) {
+    return This->lpVtbl->GetExpiryDate(This,pqwExpiryDate);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetCallersId_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD *pdwCallersId);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetCallersId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetFileName_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    BSTR *pbstrFilename);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetFileName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_IsRenewalSuccessful_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    WINBOOL *pfRenewalSuccessful);
+void __RPC_STUB IESLicenseRenewalResultEvent_IsRenewalSuccessful_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    WINBOOL *pfCheckEntTokenCallNeeded);
+void __RPC_STUB IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetDescrambledStatus_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD *pDescrambledStatus);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetDescrambledStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetRenewalResultCode_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD *pdwRenewalResultCode);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetRenewalResultCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetCASFailureCode_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD *pdwCASFailureCode);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetCASFailureCode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetRenewalHResult_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    HRESULT *phr);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetRenewalHResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetEntitlementTokenLength_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD *pdwLength);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetEntitlementTokenLength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetEntitlementToken_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    SAFEARRAY **pbData);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetEntitlementToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetExpiryDate_Proxy(
+    IESLicenseRenewalResultEvent* This,
+    DWORD64 *pqwExpiryDate);
+void __RPC_STUB IESLicenseRenewalResultEvent_GetExpiryDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESLicenseRenewalResultEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESFileExpiryDateEvent interface
+ */
+#ifndef __IESFileExpiryDateEvent_INTERFACE_DEFINED__
+#define __IESFileExpiryDateEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESFileExpiryDateEvent, 0xba9edcb6, 0x4d36, 0x4cfe, 0x8c,0x56, 0x87,0xa6,0xb0,0xca,0x48,0xe1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ba9edcb6-4d36-4cfe-8c56-87a6b0ca48e1")
+IESFileExpiryDateEvent : public IESEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE GetTunerId(
+        GUID *pguidTunerId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExpiryDate(
+        DWORD64 *pqwExpiryDate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFinalExpiryDate(
+        DWORD64 *pqwExpiryDate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaxRenewalCount(
+        DWORD *dwMaxRenewalCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsEntitlementTokenPresent(
+        WINBOOL *pfEntTokenPresent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DoesExpireAfterFirstUse(
+        WINBOOL *pfExpireAfterFirstUse) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESFileExpiryDateEvent, 0xba9edcb6, 0x4d36, 0x4cfe, 0x8c,0x56, 0x87,0xa6,0xb0,0xca,0x48,0xe1)
+#endif
+#else
+typedef struct IESFileExpiryDateEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESFileExpiryDateEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESFileExpiryDateEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESFileExpiryDateEvent* This);
+
+    /*** IESEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEventId)(
+        IESFileExpiryDateEvent* This,
+        DWORD *pdwEventId);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventType)(
+        IESFileExpiryDateEvent* This,
+        GUID *pguidEventType);
+
+    HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
+        IESFileExpiryDateEvent* This,
+        DWORD dwResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IESFileExpiryDateEvent* This,
+        SAFEARRAY **pbData);
+
+    HRESULT (STDMETHODCALLTYPE *GetStringData)(
+        IESFileExpiryDateEvent* This,
+        BSTR *pbstrData);
+
+    /*** IESFileExpiryDateEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTunerId)(
+        IESFileExpiryDateEvent* This,
+        GUID *pguidTunerId);
+
+    HRESULT (STDMETHODCALLTYPE *GetExpiryDate)(
+        IESFileExpiryDateEvent* This,
+        DWORD64 *pqwExpiryDate);
+
+    HRESULT (STDMETHODCALLTYPE *GetFinalExpiryDate)(
+        IESFileExpiryDateEvent* This,
+        DWORD64 *pqwExpiryDate);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxRenewalCount)(
+        IESFileExpiryDateEvent* This,
+        DWORD *dwMaxRenewalCount);
+
+    HRESULT (STDMETHODCALLTYPE *IsEntitlementTokenPresent)(
+        IESFileExpiryDateEvent* This,
+        WINBOOL *pfEntTokenPresent);
+
+    HRESULT (STDMETHODCALLTYPE *DoesExpireAfterFirstUse)(
+        IESFileExpiryDateEvent* This,
+        WINBOOL *pfExpireAfterFirstUse);
+
+    END_INTERFACE
+} IESFileExpiryDateEventVtbl;
+interface IESFileExpiryDateEvent {
+    CONST_VTBL IESFileExpiryDateEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESFileExpiryDateEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESFileExpiryDateEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESFileExpiryDateEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvent methods ***/
+#define IESFileExpiryDateEvent_GetEventId(This,pdwEventId) (This)->lpVtbl->GetEventId(This,pdwEventId)
+#define IESFileExpiryDateEvent_GetEventType(This,pguidEventType) (This)->lpVtbl->GetEventType(This,pguidEventType)
+#define IESFileExpiryDateEvent_SetCompletionStatus(This,dwResult) (This)->lpVtbl->SetCompletionStatus(This,dwResult)
+#define IESFileExpiryDateEvent_GetData(This,pbData) (This)->lpVtbl->GetData(This,pbData)
+#define IESFileExpiryDateEvent_GetStringData(This,pbstrData) (This)->lpVtbl->GetStringData(This,pbstrData)
+/*** IESFileExpiryDateEvent methods ***/
+#define IESFileExpiryDateEvent_GetTunerId(This,pguidTunerId) (This)->lpVtbl->GetTunerId(This,pguidTunerId)
+#define IESFileExpiryDateEvent_GetExpiryDate(This,pqwExpiryDate) (This)->lpVtbl->GetExpiryDate(This,pqwExpiryDate)
+#define IESFileExpiryDateEvent_GetFinalExpiryDate(This,pqwExpiryDate) (This)->lpVtbl->GetFinalExpiryDate(This,pqwExpiryDate)
+#define IESFileExpiryDateEvent_GetMaxRenewalCount(This,dwMaxRenewalCount) (This)->lpVtbl->GetMaxRenewalCount(This,dwMaxRenewalCount)
+#define IESFileExpiryDateEvent_IsEntitlementTokenPresent(This,pfEntTokenPresent) (This)->lpVtbl->IsEntitlementTokenPresent(This,pfEntTokenPresent)
+#define IESFileExpiryDateEvent_DoesExpireAfterFirstUse(This,pfExpireAfterFirstUse) (This)->lpVtbl->DoesExpireAfterFirstUse(This,pfExpireAfterFirstUse)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_QueryInterface(IESFileExpiryDateEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESFileExpiryDateEvent_AddRef(IESFileExpiryDateEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESFileExpiryDateEvent_Release(IESFileExpiryDateEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvent methods ***/
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetEventId(IESFileExpiryDateEvent* This,DWORD *pdwEventId) {
+    return This->lpVtbl->GetEventId(This,pdwEventId);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetEventType(IESFileExpiryDateEvent* This,GUID *pguidEventType) {
+    return This->lpVtbl->GetEventType(This,pguidEventType);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_SetCompletionStatus(IESFileExpiryDateEvent* This,DWORD dwResult) {
+    return This->lpVtbl->SetCompletionStatus(This,dwResult);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetData(IESFileExpiryDateEvent* This,SAFEARRAY **pbData) {
+    return This->lpVtbl->GetData(This,pbData);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetStringData(IESFileExpiryDateEvent* This,BSTR *pbstrData) {
+    return This->lpVtbl->GetStringData(This,pbstrData);
+}
+/*** IESFileExpiryDateEvent methods ***/
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetTunerId(IESFileExpiryDateEvent* This,GUID *pguidTunerId) {
+    return This->lpVtbl->GetTunerId(This,pguidTunerId);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetExpiryDate(IESFileExpiryDateEvent* This,DWORD64 *pqwExpiryDate) {
+    return This->lpVtbl->GetExpiryDate(This,pqwExpiryDate);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetFinalExpiryDate(IESFileExpiryDateEvent* This,DWORD64 *pqwExpiryDate) {
+    return This->lpVtbl->GetFinalExpiryDate(This,pqwExpiryDate);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_GetMaxRenewalCount(IESFileExpiryDateEvent* This,DWORD *dwMaxRenewalCount) {
+    return This->lpVtbl->GetMaxRenewalCount(This,dwMaxRenewalCount);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_IsEntitlementTokenPresent(IESFileExpiryDateEvent* This,WINBOOL *pfEntTokenPresent) {
+    return This->lpVtbl->IsEntitlementTokenPresent(This,pfEntTokenPresent);
+}
+static FORCEINLINE HRESULT IESFileExpiryDateEvent_DoesExpireAfterFirstUse(IESFileExpiryDateEvent* This,WINBOOL *pfExpireAfterFirstUse) {
+    return This->lpVtbl->DoesExpireAfterFirstUse(This,pfExpireAfterFirstUse);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetTunerId_Proxy(
+    IESFileExpiryDateEvent* This,
+    GUID *pguidTunerId);
+void __RPC_STUB IESFileExpiryDateEvent_GetTunerId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetExpiryDate_Proxy(
+    IESFileExpiryDateEvent* This,
+    DWORD64 *pqwExpiryDate);
+void __RPC_STUB IESFileExpiryDateEvent_GetExpiryDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetFinalExpiryDate_Proxy(
+    IESFileExpiryDateEvent* This,
+    DWORD64 *pqwExpiryDate);
+void __RPC_STUB IESFileExpiryDateEvent_GetFinalExpiryDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetMaxRenewalCount_Proxy(
+    IESFileExpiryDateEvent* This,
+    DWORD *dwMaxRenewalCount);
+void __RPC_STUB IESFileExpiryDateEvent_GetMaxRenewalCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_IsEntitlementTokenPresent_Proxy(
+    IESFileExpiryDateEvent* This,
+    WINBOOL *pfEntTokenPresent);
+void __RPC_STUB IESFileExpiryDateEvent_IsEntitlementTokenPresent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_DoesExpireAfterFirstUse_Proxy(
+    IESFileExpiryDateEvent* This,
+    WINBOOL *pfExpireAfterFirstUse);
+void __RPC_STUB IESFileExpiryDateEvent_DoesExpireAfterFirstUse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESFileExpiryDateEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESEvents interface
+ */
+#ifndef __IESEvents_INTERFACE_DEFINED__
+#define __IESEvents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESEvents, 0xabd414bf, 0xcfe5, 0x4e5e, 0xaf,0x5b, 0x4b,0x4e,0x49,0xc5,0xbf,0xeb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("abd414bf-cfe5-4e5e-af5b-4b4e49c5bfeb")
+IESEvents : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnESEventReceived(
+        GUID guidEventType,
+        IESEvent *pESEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESEvents, 0xabd414bf, 0xcfe5, 0x4e5e, 0xaf,0x5b, 0x4b,0x4e,0x49,0xc5,0xbf,0xeb)
+#endif
+#else
+typedef struct IESEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESEvents* This);
+
+    /*** IESEvents methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnESEventReceived)(
+        IESEvents* This,
+        GUID guidEventType,
+        IESEvent *pESEvent);
+
+    END_INTERFACE
+} IESEventsVtbl;
+interface IESEvents {
+    CONST_VTBL IESEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEvents methods ***/
+#define IESEvents_OnESEventReceived(This,guidEventType,pESEvent) (This)->lpVtbl->OnESEventReceived(This,guidEventType,pESEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESEvents_QueryInterface(IESEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESEvents_AddRef(IESEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESEvents_Release(IESEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEvents methods ***/
+static FORCEINLINE HRESULT IESEvents_OnESEventReceived(IESEvents* This,GUID guidEventType,IESEvent *pESEvent) {
+    return This->lpVtbl->OnESEventReceived(This,guidEventType,pESEvent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESEvents_OnESEventReceived_Proxy(
+    IESEvents* This,
+    GUID guidEventType,
+    IESEvent *pESEvent);
+void __RPC_STUB IESEvents_OnESEventReceived_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESEvents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESEventService interface
+ */
+#ifndef __IESEventService_INTERFACE_DEFINED__
+#define __IESEventService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESEventService, 0xed89a619, 0x4c06, 0x4b2f, 0x99,0xeb, 0xc7,0x66,0x9b,0x13,0x04,0x7c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ed89a619-4c06-4b2f-99eb-c7669b13047c")
+IESEventService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE FireESEvent(
+        IESEvent *pESEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESEventService, 0xed89a619, 0x4c06, 0x4b2f, 0x99,0xeb, 0xc7,0x66,0x9b,0x13,0x04,0x7c)
+#endif
+#else
+typedef struct IESEventServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESEventService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESEventService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESEventService* This);
+
+    /*** IESEventService methods ***/
+    HRESULT (STDMETHODCALLTYPE *FireESEvent)(
+        IESEventService* This,
+        IESEvent *pESEvent);
+
+    END_INTERFACE
+} IESEventServiceVtbl;
+interface IESEventService {
+    CONST_VTBL IESEventServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESEventService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESEventService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESEventService_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEventService methods ***/
+#define IESEventService_FireESEvent(This,pESEvent) (This)->lpVtbl->FireESEvent(This,pESEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESEventService_QueryInterface(IESEventService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESEventService_AddRef(IESEventService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESEventService_Release(IESEventService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEventService methods ***/
+static FORCEINLINE HRESULT IESEventService_FireESEvent(IESEventService* This,IESEvent *pESEvent) {
+    return This->lpVtbl->FireESEvent(This,pESEvent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESEventService_FireESEvent_Proxy(
+    IESEventService* This,
+    IESEvent *pESEvent);
+void __RPC_STUB IESEventService_FireESEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESEventService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IESEventServiceConfiguration interface
+ */
+#ifndef __IESEventServiceConfiguration_INTERFACE_DEFINED__
+#define __IESEventServiceConfiguration_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IESEventServiceConfiguration, 0x33b9daae, 0x9309, 0x491d, 0xa0,0x51, 0xbc,0xad,0x2a,0x70,0xcd,0x66);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("33b9daae-9309-491d-a051-bcad2a70cd66")
+IESEventServiceConfiguration : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetParent(
+        IESEventService *pEventService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveParent(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOwner(
+        IESEvents *pESEvents) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveOwner(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGraph(
+        IFilterGraph *pGraph) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveGraph(
+        IFilterGraph *pGraph) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IESEventServiceConfiguration, 0x33b9daae, 0x9309, 0x491d, 0xa0,0x51, 0xbc,0xad,0x2a,0x70,0xcd,0x66)
+#endif
+#else
+typedef struct IESEventServiceConfigurationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IESEventServiceConfiguration* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IESEventServiceConfiguration* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IESEventServiceConfiguration* This);
+
+    /*** IESEventServiceConfiguration methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetParent)(
+        IESEventServiceConfiguration* This,
+        IESEventService *pEventService);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveParent)(
+        IESEventServiceConfiguration* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetOwner)(
+        IESEventServiceConfiguration* This,
+        IESEvents *pESEvents);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveOwner)(
+        IESEventServiceConfiguration* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetGraph)(
+        IESEventServiceConfiguration* This,
+        IFilterGraph *pGraph);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveGraph)(
+        IESEventServiceConfiguration* This,
+        IFilterGraph *pGraph);
+
+    END_INTERFACE
+} IESEventServiceConfigurationVtbl;
+interface IESEventServiceConfiguration {
+    CONST_VTBL IESEventServiceConfigurationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IESEventServiceConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IESEventServiceConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IESEventServiceConfiguration_Release(This) (This)->lpVtbl->Release(This)
+/*** IESEventServiceConfiguration methods ***/
+#define IESEventServiceConfiguration_SetParent(This,pEventService) (This)->lpVtbl->SetParent(This,pEventService)
+#define IESEventServiceConfiguration_RemoveParent(This) (This)->lpVtbl->RemoveParent(This)
+#define IESEventServiceConfiguration_SetOwner(This,pESEvents) (This)->lpVtbl->SetOwner(This,pESEvents)
+#define IESEventServiceConfiguration_RemoveOwner(This) (This)->lpVtbl->RemoveOwner(This)
+#define IESEventServiceConfiguration_SetGraph(This,pGraph) (This)->lpVtbl->SetGraph(This,pGraph)
+#define IESEventServiceConfiguration_RemoveGraph(This,pGraph) (This)->lpVtbl->RemoveGraph(This,pGraph)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IESEventServiceConfiguration_QueryInterface(IESEventServiceConfiguration* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IESEventServiceConfiguration_AddRef(IESEventServiceConfiguration* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IESEventServiceConfiguration_Release(IESEventServiceConfiguration* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IESEventServiceConfiguration methods ***/
+static FORCEINLINE HRESULT IESEventServiceConfiguration_SetParent(IESEventServiceConfiguration* This,IESEventService *pEventService) {
+    return This->lpVtbl->SetParent(This,pEventService);
+}
+static FORCEINLINE HRESULT IESEventServiceConfiguration_RemoveParent(IESEventServiceConfiguration* This) {
+    return This->lpVtbl->RemoveParent(This);
+}
+static FORCEINLINE HRESULT IESEventServiceConfiguration_SetOwner(IESEventServiceConfiguration* This,IESEvents *pESEvents) {
+    return This->lpVtbl->SetOwner(This,pESEvents);
+}
+static FORCEINLINE HRESULT IESEventServiceConfiguration_RemoveOwner(IESEventServiceConfiguration* This) {
+    return This->lpVtbl->RemoveOwner(This);
+}
+static FORCEINLINE HRESULT IESEventServiceConfiguration_SetGraph(IESEventServiceConfiguration* This,IFilterGraph *pGraph) {
+    return This->lpVtbl->SetGraph(This,pGraph);
+}
+static FORCEINLINE HRESULT IESEventServiceConfiguration_RemoveGraph(IESEventServiceConfiguration* This,IFilterGraph *pGraph) {
+    return This->lpVtbl->RemoveGraph(This,pGraph);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetParent_Proxy(
+    IESEventServiceConfiguration* This,
+    IESEventService *pEventService);
+void __RPC_STUB IESEventServiceConfiguration_SetParent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveParent_Proxy(
+    IESEventServiceConfiguration* This);
+void __RPC_STUB IESEventServiceConfiguration_RemoveParent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetOwner_Proxy(
+    IESEventServiceConfiguration* This,
+    IESEvents *pESEvents);
+void __RPC_STUB IESEventServiceConfiguration_SetOwner_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveOwner_Proxy(
+    IESEventServiceConfiguration* This);
+void __RPC_STUB IESEventServiceConfiguration_RemoveOwner_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetGraph_Proxy(
+    IESEventServiceConfiguration* This,
+    IFilterGraph *pGraph);
+void __RPC_STUB IESEventServiceConfiguration_SetGraph_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveGraph_Proxy(
+    IESEventServiceConfiguration* This,
+    IFilterGraph *pGraph);
+void __RPC_STUB IESEventServiceConfiguration_RemoveGraph_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IESEventServiceConfiguration_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBroadcastEvent interface
+ */
+#ifndef __IBroadcastEvent_INTERFACE_DEFINED__
+#define __IBroadcastEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBroadcastEvent, 0x3b21263f, 0x26e8, 0x489d, 0xaa,0xc4, 0x92,0x4f,0x7e,0xfd,0x95,0x11);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3b21263f-26e8-489d-aac4-924f7efd9511")
+IBroadcastEvent : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Fire(
+        GUID EventID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBroadcastEvent, 0x3b21263f, 0x26e8, 0x489d, 0xaa,0xc4, 0x92,0x4f,0x7e,0xfd,0x95,0x11)
+#endif
+#else
+typedef struct IBroadcastEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBroadcastEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBroadcastEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBroadcastEvent* This);
+
+    /*** IBroadcastEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *Fire)(
+        IBroadcastEvent* This,
+        GUID EventID);
+
+    END_INTERFACE
+} IBroadcastEventVtbl;
+interface IBroadcastEvent {
+    CONST_VTBL IBroadcastEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBroadcastEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBroadcastEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBroadcastEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** IBroadcastEvent methods ***/
+#define IBroadcastEvent_Fire(This,EventID) (This)->lpVtbl->Fire(This,EventID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBroadcastEvent_QueryInterface(IBroadcastEvent* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBroadcastEvent_AddRef(IBroadcastEvent* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBroadcastEvent_Release(IBroadcastEvent* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBroadcastEvent methods ***/
+static FORCEINLINE HRESULT IBroadcastEvent_Fire(IBroadcastEvent* This,GUID EventID) {
+    return This->lpVtbl->Fire(This,EventID);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBroadcastEvent_Fire_Proxy(
+    IBroadcastEvent* This,
+    GUID EventID);
+void __RPC_STUB IBroadcastEvent_Fire_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBroadcastEvent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBroadcastEventEx interface
+ */
+#ifndef __IBroadcastEventEx_INTERFACE_DEFINED__
+#define __IBroadcastEventEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBroadcastEventEx, 0x3d9e3887, 0x1929, 0x423f, 0x80,0x21, 0x43,0x68,0x2d,0xe9,0x54,0x48);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3d9e3887-1929-423f-8021-43682de95448")
+IBroadcastEventEx : public IBroadcastEvent
+{
+    virtual HRESULT STDMETHODCALLTYPE FireEx(
+        GUID EventID,
+        ULONG Param1,
+        ULONG Param2,
+        ULONG Param3,
+        ULONG Param4) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBroadcastEventEx, 0x3d9e3887, 0x1929, 0x423f, 0x80,0x21, 0x43,0x68,0x2d,0xe9,0x54,0x48)
+#endif
+#else
+typedef struct IBroadcastEventExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBroadcastEventEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBroadcastEventEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBroadcastEventEx* This);
+
+    /*** IBroadcastEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *Fire)(
+        IBroadcastEventEx* This,
+        GUID EventID);
+
+    /*** IBroadcastEventEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *FireEx)(
+        IBroadcastEventEx* This,
+        GUID EventID,
+        ULONG Param1,
+        ULONG Param2,
+        ULONG Param3,
+        ULONG Param4);
+
+    END_INTERFACE
+} IBroadcastEventExVtbl;
+interface IBroadcastEventEx {
+    CONST_VTBL IBroadcastEventExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBroadcastEventEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBroadcastEventEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBroadcastEventEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IBroadcastEvent methods ***/
+#define IBroadcastEventEx_Fire(This,EventID) (This)->lpVtbl->Fire(This,EventID)
+/*** IBroadcastEventEx methods ***/
+#define IBroadcastEventEx_FireEx(This,EventID,Param1,Param2,Param3,Param4) (This)->lpVtbl->FireEx(This,EventID,Param1,Param2,Param3,Param4)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBroadcastEventEx_QueryInterface(IBroadcastEventEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBroadcastEventEx_AddRef(IBroadcastEventEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBroadcastEventEx_Release(IBroadcastEventEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBroadcastEvent methods ***/
+static FORCEINLINE HRESULT IBroadcastEventEx_Fire(IBroadcastEventEx* This,GUID EventID) {
+    return This->lpVtbl->Fire(This,EventID);
+}
+/*** IBroadcastEventEx methods ***/
+static FORCEINLINE HRESULT IBroadcastEventEx_FireEx(IBroadcastEventEx* This,GUID EventID,ULONG Param1,ULONG Param2,ULONG Param3,ULONG Param4) {
+    return This->lpVtbl->FireEx(This,EventID,Param1,Param2,Param3,Param4);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBroadcastEventEx_FireEx_Proxy(
+    IBroadcastEventEx* This,
+    GUID EventID,
+    ULONG Param1,
+    ULONG Param2,
+    ULONG Param3,
+    ULONG Param4);
+void __RPC_STUB IBroadcastEventEx_FireEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBroadcastEventEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IRegisterTuner interface
+ */
+#ifndef __IRegisterTuner_INTERFACE_DEFINED__
+#define __IRegisterTuner_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRegisterTuner, 0x359b3901, 0x572c, 0x4854, 0xbb,0x49, 0xcd,0xef,0x66,0x60,0x6a,0x25);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("359b3901-572c-4854-bb49-cdef66606a25")
+IRegisterTuner : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Register(
+        ITuner *pTuner,
+        IGraphBuilder *pGraph) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unregister(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IRegisterTuner, 0x359b3901, 0x572c, 0x4854, 0xbb,0x49, 0xcd,0xef,0x66,0x60,0x6a,0x25)
+#endif
+#else
+typedef struct IRegisterTunerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRegisterTuner* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRegisterTuner* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRegisterTuner* This);
+
+    /*** IRegisterTuner methods ***/
+    HRESULT (STDMETHODCALLTYPE *Register)(
+        IRegisterTuner* This,
+        ITuner *pTuner,
+        IGraphBuilder *pGraph);
+
+    HRESULT (STDMETHODCALLTYPE *Unregister)(
+        IRegisterTuner* This);
+
+    END_INTERFACE
+} IRegisterTunerVtbl;
+interface IRegisterTuner {
+    CONST_VTBL IRegisterTunerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IRegisterTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRegisterTuner_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRegisterTuner_Release(This) (This)->lpVtbl->Release(This)
+/*** IRegisterTuner methods ***/
+#define IRegisterTuner_Register(This,pTuner,pGraph) (This)->lpVtbl->Register(This,pTuner,pGraph)
+#define IRegisterTuner_Unregister(This) (This)->lpVtbl->Unregister(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IRegisterTuner_QueryInterface(IRegisterTuner* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IRegisterTuner_AddRef(IRegisterTuner* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IRegisterTuner_Release(IRegisterTuner* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IRegisterTuner methods ***/
+static FORCEINLINE HRESULT IRegisterTuner_Register(IRegisterTuner* This,ITuner *pTuner,IGraphBuilder *pGraph) {
+    return This->lpVtbl->Register(This,pTuner,pGraph);
+}
+static FORCEINLINE HRESULT IRegisterTuner_Unregister(IRegisterTuner* This) {
+    return This->lpVtbl->Unregister(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRegisterTuner_Register_Proxy(
+    IRegisterTuner* This,
+    ITuner *pTuner,
+    IGraphBuilder *pGraph);
+void __RPC_STUB IRegisterTuner_Register_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRegisterTuner_Unregister_Proxy(
+    IRegisterTuner* This);
+void __RPC_STUB IRegisterTuner_Unregister_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRegisterTuner_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDAComparable interface
+ */
+#ifndef __IBDAComparable_INTERFACE_DEFINED__
+#define __IBDAComparable_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDAComparable, 0xb34505e0, 0x2f0e, 0x497b, 0x80,0xbc, 0xd4,0x3f,0x3b,0x24,0xed,0x7f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b34505e0-2f0e-497b-80bc-d43f3b24ed7f")
+IBDAComparable : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CompareExact(
+        IDispatch *CompareTo,
+        LONG *Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CompareEquivalent(
+        IDispatch *CompareTo,
+        DWORD dwFlags,
+        LONG *Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HashExact(
+        INT64 *Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HashExactIncremental(
+        INT64 PartialResult,
+        INT64 *Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HashEquivalent(
+        DWORD dwFlags,
+        INT64 *Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HashEquivalentIncremental(
+        INT64 PartialResult,
+        DWORD dwFlags,
+        INT64 *Result) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDAComparable, 0xb34505e0, 0x2f0e, 0x497b, 0x80,0xbc, 0xd4,0x3f,0x3b,0x24,0xed,0x7f)
+#endif
+#else
+typedef struct IBDAComparableVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDAComparable* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDAComparable* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDAComparable* This);
+
+    /*** IBDAComparable methods ***/
+    HRESULT (STDMETHODCALLTYPE *CompareExact)(
+        IBDAComparable* This,
+        IDispatch *CompareTo,
+        LONG *Result);
+
+    HRESULT (STDMETHODCALLTYPE *CompareEquivalent)(
+        IBDAComparable* This,
+        IDispatch *CompareTo,
+        DWORD dwFlags,
+        LONG *Result);
+
+    HRESULT (STDMETHODCALLTYPE *HashExact)(
+        IBDAComparable* This,
+        INT64 *Result);
+
+    HRESULT (STDMETHODCALLTYPE *HashExactIncremental)(
+        IBDAComparable* This,
+        INT64 PartialResult,
+        INT64 *Result);
+
+    HRESULT (STDMETHODCALLTYPE *HashEquivalent)(
+        IBDAComparable* This,
+        DWORD dwFlags,
+        INT64 *Result);
+
+    HRESULT (STDMETHODCALLTYPE *HashEquivalentIncremental)(
+        IBDAComparable* This,
+        INT64 PartialResult,
+        DWORD dwFlags,
+        INT64 *Result);
+
+    END_INTERFACE
+} IBDAComparableVtbl;
+interface IBDAComparable {
+    CONST_VTBL IBDAComparableVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDAComparable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDAComparable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDAComparable_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDAComparable methods ***/
+#define IBDAComparable_CompareExact(This,CompareTo,Result) (This)->lpVtbl->CompareExact(This,CompareTo,Result)
+#define IBDAComparable_CompareEquivalent(This,CompareTo,dwFlags,Result) (This)->lpVtbl->CompareEquivalent(This,CompareTo,dwFlags,Result)
+#define IBDAComparable_HashExact(This,Result) (This)->lpVtbl->HashExact(This,Result)
+#define IBDAComparable_HashExactIncremental(This,PartialResult,Result) (This)->lpVtbl->HashExactIncremental(This,PartialResult,Result)
+#define IBDAComparable_HashEquivalent(This,dwFlags,Result) (This)->lpVtbl->HashEquivalent(This,dwFlags,Result)
+#define IBDAComparable_HashEquivalentIncremental(This,PartialResult,dwFlags,Result) (This)->lpVtbl->HashEquivalentIncremental(This,PartialResult,dwFlags,Result)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDAComparable_QueryInterface(IBDAComparable* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDAComparable_AddRef(IBDAComparable* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDAComparable_Release(IBDAComparable* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDAComparable methods ***/
+static FORCEINLINE HRESULT IBDAComparable_CompareExact(IBDAComparable* This,IDispatch *CompareTo,LONG *Result) {
+    return This->lpVtbl->CompareExact(This,CompareTo,Result);
+}
+static FORCEINLINE HRESULT IBDAComparable_CompareEquivalent(IBDAComparable* This,IDispatch *CompareTo,DWORD dwFlags,LONG *Result) {
+    return This->lpVtbl->CompareEquivalent(This,CompareTo,dwFlags,Result);
+}
+static FORCEINLINE HRESULT IBDAComparable_HashExact(IBDAComparable* This,INT64 *Result) {
+    return This->lpVtbl->HashExact(This,Result);
+}
+static FORCEINLINE HRESULT IBDAComparable_HashExactIncremental(IBDAComparable* This,INT64 PartialResult,INT64 *Result) {
+    return This->lpVtbl->HashExactIncremental(This,PartialResult,Result);
+}
+static FORCEINLINE HRESULT IBDAComparable_HashEquivalent(IBDAComparable* This,DWORD dwFlags,INT64 *Result) {
+    return This->lpVtbl->HashEquivalent(This,dwFlags,Result);
+}
+static FORCEINLINE HRESULT IBDAComparable_HashEquivalentIncremental(IBDAComparable* This,INT64 PartialResult,DWORD dwFlags,INT64 *Result) {
+    return This->lpVtbl->HashEquivalentIncremental(This,PartialResult,dwFlags,Result);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDAComparable_CompareExact_Proxy(
+    IBDAComparable* This,
+    IDispatch *CompareTo,
+    LONG *Result);
+void __RPC_STUB IBDAComparable_CompareExact_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDAComparable_CompareEquivalent_Proxy(
+    IBDAComparable* This,
+    IDispatch *CompareTo,
+    DWORD dwFlags,
+    LONG *Result);
+void __RPC_STUB IBDAComparable_CompareEquivalent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDAComparable_HashExact_Proxy(
+    IBDAComparable* This,
+    INT64 *Result);
+void __RPC_STUB IBDAComparable_HashExact_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDAComparable_HashExactIncremental_Proxy(
+    IBDAComparable* This,
+    INT64 PartialResult,
+    INT64 *Result);
+void __RPC_STUB IBDAComparable_HashExactIncremental_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDAComparable_HashEquivalent_Proxy(
+    IBDAComparable* This,
+    DWORD dwFlags,
+    INT64 *Result);
+void __RPC_STUB IBDAComparable_HashEquivalent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBDAComparable_HashEquivalentIncremental_Proxy(
+    IBDAComparable* This,
+    INT64 PartialResult,
+    DWORD dwFlags,
+    INT64 *Result);
+void __RPC_STUB IBDAComparable_HashEquivalentIncremental_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDAComparable_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IPersistTuneXml interface
+ */
+#ifndef __IPersistTuneXml_INTERFACE_DEFINED__
+#define __IPersistTuneXml_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistTuneXml, 0x0754cd31, 0x8d15, 0x47a9, 0x82,0x15, 0xd2,0x00,0x64,0x15,0x72,0x44);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0754cd31-8d15-47a9-8215-d20064157244")
+IPersistTuneXml : public IPersist
+{
+    virtual HRESULT STDMETHODCALLTYPE InitNew(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        VARIANT varValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        VARIANT *pvarFragment) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IPersistTuneXml, 0x0754cd31, 0x8d15, 0x47a9, 0x82,0x15, 0xd2,0x00,0x64,0x15,0x72,0x44)
+#endif
+#else
+typedef struct IPersistTuneXmlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistTuneXml* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistTuneXml* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistTuneXml* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersistTuneXml* This,
+        CLSID *pClassID);
+
+    /*** IPersistTuneXml methods ***/
+    HRESULT (STDMETHODCALLTYPE *InitNew)(
+        IPersistTuneXml* This);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IPersistTuneXml* This,
+        VARIANT varValue);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IPersistTuneXml* This,
+        VARIANT *pvarFragment);
+
+    END_INTERFACE
+} IPersistTuneXmlVtbl;
+interface IPersistTuneXml {
+    CONST_VTBL IPersistTuneXmlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IPersistTuneXml_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistTuneXml_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistTuneXml_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IPersistTuneXml_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+/*** IPersistTuneXml methods ***/
+#define IPersistTuneXml_InitNew(This) (This)->lpVtbl->InitNew(This)
+#define IPersistTuneXml_Load(This,varValue) (This)->lpVtbl->Load(This,varValue)
+#define IPersistTuneXml_Save(This,pvarFragment) (This)->lpVtbl->Save(This,pvarFragment)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IPersistTuneXml_QueryInterface(IPersistTuneXml* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IPersistTuneXml_AddRef(IPersistTuneXml* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IPersistTuneXml_Release(IPersistTuneXml* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IPersist methods ***/
+static FORCEINLINE HRESULT IPersistTuneXml_GetClassID(IPersistTuneXml* This,CLSID *pClassID) {
+    return This->lpVtbl->GetClassID(This,pClassID);
+}
+/*** IPersistTuneXml methods ***/
+static FORCEINLINE HRESULT IPersistTuneXml_InitNew(IPersistTuneXml* This) {
+    return This->lpVtbl->InitNew(This);
+}
+static FORCEINLINE HRESULT IPersistTuneXml_Load(IPersistTuneXml* This,VARIANT varValue) {
+    return This->lpVtbl->Load(This,varValue);
+}
+static FORCEINLINE HRESULT IPersistTuneXml_Save(IPersistTuneXml* This,VARIANT *pvarFragment) {
+    return This->lpVtbl->Save(This,pvarFragment);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistTuneXml_InitNew_Proxy(
+    IPersistTuneXml* This);
+void __RPC_STUB IPersistTuneXml_InitNew_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistTuneXml_Load_Proxy(
+    IPersistTuneXml* This,
+    VARIANT varValue);
+void __RPC_STUB IPersistTuneXml_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistTuneXml_Save_Proxy(
+    IPersistTuneXml* This,
+    VARIANT *pvarFragment);
+void __RPC_STUB IPersistTuneXml_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistTuneXml_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IPersistTuneXmlUtility interface
+ */
+#ifndef __IPersistTuneXmlUtility_INTERFACE_DEFINED__
+#define __IPersistTuneXmlUtility_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistTuneXmlUtility, 0x990237ae, 0xac11, 0x4614, 0xbe,0x8f, 0xdd,0x21,0x7a,0x4c,0xb4,0xcb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("990237ae-ac11-4614-be8f-dd217a4cb4cb")
+IPersistTuneXmlUtility : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Deserialize(
+        VARIANT varValue,
+        IUnknown **ppObject) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IPersistTuneXmlUtility, 0x990237ae, 0xac11, 0x4614, 0xbe,0x8f, 0xdd,0x21,0x7a,0x4c,0xb4,0xcb)
+#endif
+#else
+typedef struct IPersistTuneXmlUtilityVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistTuneXmlUtility* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistTuneXmlUtility* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistTuneXmlUtility* This);
+
+    /*** IPersistTuneXmlUtility methods ***/
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IPersistTuneXmlUtility* This,
+        VARIANT varValue,
+        IUnknown **ppObject);
+
+    END_INTERFACE
+} IPersistTuneXmlUtilityVtbl;
+interface IPersistTuneXmlUtility {
+    CONST_VTBL IPersistTuneXmlUtilityVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IPersistTuneXmlUtility_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistTuneXmlUtility_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistTuneXmlUtility_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersistTuneXmlUtility methods ***/
+#define IPersistTuneXmlUtility_Deserialize(This,varValue,ppObject) (This)->lpVtbl->Deserialize(This,varValue,ppObject)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IPersistTuneXmlUtility_QueryInterface(IPersistTuneXmlUtility* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IPersistTuneXmlUtility_AddRef(IPersistTuneXmlUtility* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IPersistTuneXmlUtility_Release(IPersistTuneXmlUtility* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IPersistTuneXmlUtility methods ***/
+static FORCEINLINE HRESULT IPersistTuneXmlUtility_Deserialize(IPersistTuneXmlUtility* This,VARIANT varValue,IUnknown **ppObject) {
+    return This->lpVtbl->Deserialize(This,varValue,ppObject);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistTuneXmlUtility_Deserialize_Proxy(
+    IPersistTuneXmlUtility* This,
+    VARIANT varValue,
+    IUnknown **ppObject);
+void __RPC_STUB IPersistTuneXmlUtility_Deserialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistTuneXmlUtility_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IPersistTuneXmlUtility2 interface
+ */
+#ifndef __IPersistTuneXmlUtility2_INTERFACE_DEFINED__
+#define __IPersistTuneXmlUtility2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistTuneXmlUtility2, 0x992e165f, 0xea24, 0x4b2f, 0x9a,0x1d, 0x00,0x9d,0x92,0x12,0x04,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("992e165f-ea24-4b2f-9a1d-009d92120451")
+IPersistTuneXmlUtility2 : public IPersistTuneXmlUtility
+{
+    virtual HRESULT STDMETHODCALLTYPE Serialize(
+        ITuneRequest *piTuneRequest,
+        BSTR *pString) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IPersistTuneXmlUtility2, 0x992e165f, 0xea24, 0x4b2f, 0x9a,0x1d, 0x00,0x9d,0x92,0x12,0x04,0x51)
+#endif
+#else
+typedef struct IPersistTuneXmlUtility2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistTuneXmlUtility2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistTuneXmlUtility2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistTuneXmlUtility2* This);
+
+    /*** IPersistTuneXmlUtility methods ***/
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IPersistTuneXmlUtility2* This,
+        VARIANT varValue,
+        IUnknown **ppObject);
+
+    /*** IPersistTuneXmlUtility2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *Serialize)(
+        IPersistTuneXmlUtility2* This,
+        ITuneRequest *piTuneRequest,
+        BSTR *pString);
+
+    END_INTERFACE
+} IPersistTuneXmlUtility2Vtbl;
+interface IPersistTuneXmlUtility2 {
+    CONST_VTBL IPersistTuneXmlUtility2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IPersistTuneXmlUtility2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistTuneXmlUtility2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistTuneXmlUtility2_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersistTuneXmlUtility methods ***/
+#define IPersistTuneXmlUtility2_Deserialize(This,varValue,ppObject) (This)->lpVtbl->Deserialize(This,varValue,ppObject)
+/*** IPersistTuneXmlUtility2 methods ***/
+#define IPersistTuneXmlUtility2_Serialize(This,piTuneRequest,pString) (This)->lpVtbl->Serialize(This,piTuneRequest,pString)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IPersistTuneXmlUtility2_QueryInterface(IPersistTuneXmlUtility2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IPersistTuneXmlUtility2_AddRef(IPersistTuneXmlUtility2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IPersistTuneXmlUtility2_Release(IPersistTuneXmlUtility2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IPersistTuneXmlUtility methods ***/
+static FORCEINLINE HRESULT IPersistTuneXmlUtility2_Deserialize(IPersistTuneXmlUtility2* This,VARIANT varValue,IUnknown **ppObject) {
+    return This->lpVtbl->Deserialize(This,varValue,ppObject);
+}
+/*** IPersistTuneXmlUtility2 methods ***/
+static FORCEINLINE HRESULT IPersistTuneXmlUtility2_Serialize(IPersistTuneXmlUtility2* This,ITuneRequest *piTuneRequest,BSTR *pString) {
+    return This->lpVtbl->Serialize(This,piTuneRequest,pString);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistTuneXmlUtility2_Serialize_Proxy(
+    IPersistTuneXmlUtility2* This,
+    ITuneRequest *piTuneRequest,
+    BSTR *pString);
+void __RPC_STUB IPersistTuneXmlUtility2_Serialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistTuneXmlUtility2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBDACreateTuneRequestEx interface
+ */
+#ifndef __IBDACreateTuneRequestEx_INTERFACE_DEFINED__
+#define __IBDACreateTuneRequestEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBDACreateTuneRequestEx, 0xc0a4a1d4, 0x2b3c, 0x491a, 0xba,0x22, 0x49,0x9f,0xba,0xdd,0x4d,0x12);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c0a4a1d4-2b3c-491a-ba22-499fbadd4d12")
+IBDACreateTuneRequestEx : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateTuneRequestEx(
+        REFCLSID TuneRequestIID,
+        ITuneRequest **TuneRequest) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBDACreateTuneRequestEx, 0xc0a4a1d4, 0x2b3c, 0x491a, 0xba,0x22, 0x49,0x9f,0xba,0xdd,0x4d,0x12)
+#endif
+#else
+typedef struct IBDACreateTuneRequestExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBDACreateTuneRequestEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBDACreateTuneRequestEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBDACreateTuneRequestEx* This);
+
+    /*** IBDACreateTuneRequestEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTuneRequestEx)(
+        IBDACreateTuneRequestEx* This,
+        REFCLSID TuneRequestIID,
+        ITuneRequest **TuneRequest);
+
+    END_INTERFACE
+} IBDACreateTuneRequestExVtbl;
+interface IBDACreateTuneRequestEx {
+    CONST_VTBL IBDACreateTuneRequestExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBDACreateTuneRequestEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBDACreateTuneRequestEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBDACreateTuneRequestEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IBDACreateTuneRequestEx methods ***/
+#define IBDACreateTuneRequestEx_CreateTuneRequestEx(This,TuneRequestIID,TuneRequest) (This)->lpVtbl->CreateTuneRequestEx(This,TuneRequestIID,TuneRequest)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBDACreateTuneRequestEx_QueryInterface(IBDACreateTuneRequestEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBDACreateTuneRequestEx_AddRef(IBDACreateTuneRequestEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBDACreateTuneRequestEx_Release(IBDACreateTuneRequestEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBDACreateTuneRequestEx methods ***/
+static FORCEINLINE HRESULT IBDACreateTuneRequestEx_CreateTuneRequestEx(IBDACreateTuneRequestEx* This,REFCLSID TuneRequestIID,ITuneRequest **TuneRequest) {
+    return This->lpVtbl->CreateTuneRequestEx(This,TuneRequestIID,TuneRequest);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBDACreateTuneRequestEx_CreateTuneRequestEx_Proxy(
+    IBDACreateTuneRequestEx* This,
+    REFCLSID TuneRequestIID,
+    ITuneRequest **TuneRequest);
+void __RPC_STUB IBDACreateTuneRequestEx_CreateTuneRequestEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBDACreateTuneRequestEx_INTERFACE_DEFINED__ */
+
+
+DEFINE_GUID(LIBID_TunerLib, 0x9b085638, 0x018e, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+/*****************************************************************************
+ * SystemTuningSpaces coclass
+ */
+
+DEFINE_GUID(CLSID_SystemTuningSpaces, 0xd02aac50, 0x027e, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("d02aac50-027e-11d3-9d8e-00c04f72d980") SystemTuningSpaces;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(SystemTuningSpaces, 0xd02aac50, 0x027e, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#endif
+
+/*****************************************************************************
+ * TuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_TuningSpace, 0x5ffdc5e6, 0xb83a, 0x4b55, 0xb6,0xe8, 0xc6,0x9e,0x76,0x5f,0xe9,0xdb);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("5ffdc5e6-b83a-4b55-b6e8-c69e765fe9db") TuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(TuningSpace, 0x5ffdc5e6, 0xb83a, 0x4b55, 0xb6,0xe8, 0xc6,0x9e,0x76,0x5f,0xe9,0xdb)
+#endif
+#endif
+
+/*****************************************************************************
+ * ChannelIDTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_ChannelIDTuningSpace, 0xcc829a2f, 0x3365, 0x463f, 0xaf,0x13, 0x81,0xdb,0xb6,0xf3,0xa5,0x55);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("cc829a2f-3365-463f-af13-81dbb6f3a555") ChannelIDTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ChannelIDTuningSpace, 0xcc829a2f, 0x3365, 0x463f, 0xaf,0x13, 0x81,0xdb,0xb6,0xf3,0xa5,0x55)
+#endif
+#endif
+
+/*****************************************************************************
+ * ATSCTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_ATSCTuningSpace, 0xa2e30750, 0x6c3d, 0x11d3, 0xb6,0x53, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("a2e30750-6c3d-11d3-b653-00c04f79498e") ATSCTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ATSCTuningSpace, 0xa2e30750, 0x6c3d, 0x11d3, 0xb6,0x53, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * DigitalCableTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_DigitalCableTuningSpace, 0xd9bb4cee, 0xb87a, 0x47f1, 0xac,0x92, 0xb0,0x8d,0x9c,0x78,0x13,0xfc);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("d9bb4cee-b87a-47f1-ac92-b08d9c7813fc") DigitalCableTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DigitalCableTuningSpace, 0xd9bb4cee, 0xb87a, 0x47f1, 0xac,0x92, 0xb0,0x8d,0x9c,0x78,0x13,0xfc)
+#endif
+#endif
+
+/*****************************************************************************
+ * AnalogRadioTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_AnalogRadioTuningSpace, 0x8a674b4c, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8a674b4c-1f63-11d3-b64c-00c04f79498e") AnalogRadioTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AnalogRadioTuningSpace, 0x8a674b4c, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * AuxInTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_AuxInTuningSpace, 0xf9769a06, 0x7aca, 0x4e39, 0x9c,0xfb, 0x97,0xbb,0x35,0xf0,0xe7,0x7e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("f9769a06-7aca-4e39-9cfb-97bb35f0e77e") AuxInTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AuxInTuningSpace, 0xf9769a06, 0x7aca, 0x4e39, 0x9c,0xfb, 0x97,0xbb,0x35,0xf0,0xe7,0x7e)
+#endif
+#endif
+
+/*****************************************************************************
+ * AnalogTVTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_AnalogTVTuningSpace, 0x8a674b4d, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8a674b4d-1f63-11d3-b64c-00c04f79498e") AnalogTVTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AnalogTVTuningSpace, 0x8a674b4d, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_DVBTuningSpace, 0xc6b14b32, 0x76aa, 0x4a86, 0xa7,0xac, 0x5c,0x79,0xaa,0xf5,0x8d,0xa7);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("c6b14b32-76aa-4a86-a7ac-5c79aaf58da7") DVBTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBTuningSpace, 0xc6b14b32, 0x76aa, 0x4a86, 0xa7,0xac, 0x5c,0x79,0xaa,0xf5,0x8d,0xa7)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBSTuningSpace coclass
+ */
+
+DEFINE_GUID(CLSID_DVBSTuningSpace, 0xb64016f3, 0xc9a2, 0x4066, 0x96,0xf0, 0xbd,0x95,0x63,0x31,0x47,0x26);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("b64016f3-c9a2-4066-96f0-bd9563314726") DVBSTuningSpace;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBSTuningSpace, 0xb64016f3, 0xc9a2, 0x4066, 0x96,0xf0, 0xbd,0x95,0x63,0x31,0x47,0x26)
+#endif
+#endif
+
+/*****************************************************************************
+ * ComponentTypes coclass
+ */
+
+DEFINE_GUID(CLSID_ComponentTypes, 0xa1a2b1c4, 0x0e3a, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("a1a2b1c4-0e3a-11d3-9d8e-00c04f72d980") ComponentTypes;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ComponentTypes, 0xa1a2b1c4, 0x0e3a, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#endif
+
+/*****************************************************************************
+ * ComponentType coclass
+ */
+
+DEFINE_GUID(CLSID_ComponentType, 0x823535a0, 0x0318, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("823535a0-0318-11d3-9d8e-00c04f72d980") ComponentType;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ComponentType, 0x823535a0, 0x0318, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#endif
+
+/*****************************************************************************
+ * LanguageComponentType coclass
+ */
+
+DEFINE_GUID(CLSID_LanguageComponentType, 0x1be49f30, 0x0e1b, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("1be49f30-0e1b-11d3-9d8e-00c04f72d980") LanguageComponentType;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(LanguageComponentType, 0x1be49f30, 0x0e1b, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#endif
+
+/*****************************************************************************
+ * MPEG2ComponentType coclass
+ */
+
+DEFINE_GUID(CLSID_MPEG2ComponentType, 0x418008f3, 0xcf67, 0x4668, 0x96,0x28, 0x10,0xdc,0x52,0xbe,0x1d,0x08);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("418008f3-cf67-4668-9628-10dc52be1d08") MPEG2ComponentType;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(MPEG2ComponentType, 0x418008f3, 0xcf67, 0x4668, 0x96,0x28, 0x10,0xdc,0x52,0xbe,0x1d,0x08)
+#endif
+#endif
+
+/*****************************************************************************
+ * ATSCComponentType coclass
+ */
+
+DEFINE_GUID(CLSID_ATSCComponentType, 0xa8dcf3d5, 0x0780, 0x4ef4, 0x8a,0x83, 0x2c,0xff,0xaa,0xcb,0x8a,0xce);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("a8dcf3d5-0780-4ef4-8a83-2cffaacb8ace") ATSCComponentType;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ATSCComponentType, 0xa8dcf3d5, 0x0780, 0x4ef4, 0x8a,0x83, 0x2c,0xff,0xaa,0xcb,0x8a,0xce)
+#endif
+#endif
+
+/*****************************************************************************
+ * Components coclass
+ */
+
+DEFINE_GUID(CLSID_Components, 0x809b6661, 0x94c4, 0x49e6, 0xb6,0xec, 0x3f,0x0f,0x86,0x22,0x15,0xaa);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("809b6661-94c4-49e6-b6ec-3f0f862215aa") Components;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(Components, 0x809b6661, 0x94c4, 0x49e6, 0xb6,0xec, 0x3f,0x0f,0x86,0x22,0x15,0xaa)
+#endif
+#endif
+
+/*****************************************************************************
+ * Component coclass
+ */
+
+DEFINE_GUID(CLSID_Component, 0x59dc47a8, 0x116c, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("59dc47a8-116c-11d3-9d8e-00c04f72d980") Component;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(Component, 0x59dc47a8, 0x116c, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80)
+#endif
+#endif
+
+/*****************************************************************************
+ * MPEG2Component coclass
+ */
+
+DEFINE_GUID(CLSID_MPEG2Component, 0x055cb2d7, 0x2969, 0x45cd, 0x91,0x4b, 0x76,0x89,0x07,0x22,0xf1,0x12);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("055cb2d7-2969-45cd-914b-76890722f112") MPEG2Component;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(MPEG2Component, 0x055cb2d7, 0x2969, 0x45cd, 0x91,0x4b, 0x76,0x89,0x07,0x22,0xf1,0x12)
+#endif
+#endif
+
+/*****************************************************************************
+ * AnalogAudioComponentType coclass
+ */
+
+DEFINE_GUID(CLSID_AnalogAudioComponentType, 0x28ab0005, 0xe845, 0x4ffa, 0xaa,0x9b, 0xf4,0x66,0x52,0x36,0x14,0x1c);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("28ab0005-e845-4ffa-aa9b-f4665236141c") AnalogAudioComponentType;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AnalogAudioComponentType, 0x28ab0005, 0xe845, 0x4ffa, 0xaa,0x9b, 0xf4,0x66,0x52,0x36,0x14,0x1c)
+#endif
+#endif
+
+/*****************************************************************************
+ * TuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_TuneRequest, 0xb46e0d38, 0xab35, 0x4a06, 0xa1,0x37, 0x70,0x57,0x6b,0x01,0xb3,0x9f);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("b46e0d38-ab35-4a06-a137-70576b01b39f") TuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(TuneRequest, 0xb46e0d38, 0xab35, 0x4a06, 0xa1,0x37, 0x70,0x57,0x6b,0x01,0xb3,0x9f)
+#endif
+#endif
+
+/*****************************************************************************
+ * ChannelIDTuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_ChannelIDTuneRequest, 0x3a9428a7, 0x31a4, 0x45e9, 0x9e,0xfb, 0xe0,0x55,0xbf,0x7b,0xb3,0xdb);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("3a9428a7-31a4-45e9-9efb-e055bf7bb3db") ChannelIDTuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ChannelIDTuneRequest, 0x3a9428a7, 0x31a4, 0x45e9, 0x9e,0xfb, 0xe0,0x55,0xbf,0x7b,0xb3,0xdb)
+#endif
+#endif
+
+/*****************************************************************************
+ * ChannelTuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_ChannelTuneRequest, 0x0369b4e5, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0369b4e5-45b6-11d3-b650-00c04f79498e") ChannelTuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ChannelTuneRequest, 0x0369b4e5, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * ATSCChannelTuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_ATSCChannelTuneRequest, 0x0369b4e6, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0369b4e6-45b6-11d3-b650-00c04f79498e") ATSCChannelTuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ATSCChannelTuneRequest, 0x0369b4e6, 0x45b6, 0x11d3, 0xb6,0x50, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * DigitalCableTuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_DigitalCableTuneRequest, 0x26ec0b63, 0xaa90, 0x458a, 0x8d,0xf4, 0x56,0x59,0xf2,0xc8,0xa1,0x8a);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("26ec0b63-aa90-458a-8df4-5659f2c8a18a") DigitalCableTuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DigitalCableTuneRequest, 0x26ec0b63, 0xaa90, 0x458a, 0x8d,0xf4, 0x56,0x59,0xf2,0xc8,0xa1,0x8a)
+#endif
+#endif
+
+/*****************************************************************************
+ * MPEG2TuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_MPEG2TuneRequest, 0x0955ac62, 0xbf2e, 0x4cba, 0xa2,0xb9, 0xa6,0x3f,0x77,0x2d,0x46,0xcf);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0955ac62-bf2e-4cba-a2b9-a63f772d46cf") MPEG2TuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(MPEG2TuneRequest, 0x0955ac62, 0xbf2e, 0x4cba, 0xa2,0xb9, 0xa6,0x3f,0x77,0x2d,0x46,0xcf)
+#endif
+#endif
+
+/*****************************************************************************
+ * MPEG2TuneRequestFactory coclass
+ */
+
+DEFINE_GUID(CLSID_MPEG2TuneRequestFactory, 0x2c63e4eb, 0x4cea, 0x41b8, 0x91,0x9c, 0xe9,0x47,0xea,0x19,0xa7,0x7c);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("2c63e4eb-4cea-41b8-919c-e947ea19a77c") MPEG2TuneRequestFactory;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(MPEG2TuneRequestFactory, 0x2c63e4eb, 0x4cea, 0x41b8, 0x91,0x9c, 0xe9,0x47,0xea,0x19,0xa7,0x7c)
+#endif
+#endif
+
+/*****************************************************************************
+ * Locator coclass
+ */
+
+DEFINE_GUID(CLSID_Locator, 0x0888c883, 0xac4f, 0x4943, 0xb5,0x16, 0x2c,0x38,0xd9,0xb3,0x45,0x62);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0888c883-ac4f-4943-b516-2c38d9b34562") Locator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(Locator, 0x0888c883, 0xac4f, 0x4943, 0xb5,0x16, 0x2c,0x38,0xd9,0xb3,0x45,0x62)
+#endif
+#endif
+
+/*****************************************************************************
+ * DigitalLocator coclass
+ */
+
+DEFINE_GUID(CLSID_DigitalLocator, 0x6e50cc0d, 0xc19b, 0x4bf6, 0x81,0x0b, 0x5b,0xd6,0x07,0x61,0xf5,0xcc);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("6e50cc0d-c19b-4bf6-810b-5bd60761f5cc") DigitalLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DigitalLocator, 0x6e50cc0d, 0xc19b, 0x4bf6, 0x81,0x0b, 0x5b,0xd6,0x07,0x61,0xf5,0xcc)
+#endif
+#endif
+
+/*****************************************************************************
+ * AnalogLocator coclass
+ */
+
+DEFINE_GUID(CLSID_AnalogLocator, 0x49638b91, 0x48ab, 0x48b7, 0xa4,0x7a, 0x7d,0x0e,0x75,0xa0,0x8e,0xde);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("49638b91-48ab-48b7-a47a-7d0e75a08ede") AnalogLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AnalogLocator, 0x49638b91, 0x48ab, 0x48b7, 0xa4,0x7a, 0x7d,0x0e,0x75,0xa0,0x8e,0xde)
+#endif
+#endif
+
+/*****************************************************************************
+ * ATSCLocator coclass
+ */
+
+DEFINE_GUID(CLSID_ATSCLocator, 0x8872ff1b, 0x98fa, 0x4d7a, 0x8d,0x93, 0xc9,0xf1,0x05,0x5f,0x85,0xbb);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8872ff1b-98fa-4d7a-8d93-c9f1055f85bb") ATSCLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ATSCLocator, 0x8872ff1b, 0x98fa, 0x4d7a, 0x8d,0x93, 0xc9,0xf1,0x05,0x5f,0x85,0xbb)
+#endif
+#endif
+
+/*****************************************************************************
+ * DigitalCableLocator coclass
+ */
+
+DEFINE_GUID(CLSID_DigitalCableLocator, 0x03c06416, 0xd127, 0x407a, 0xab,0x4c, 0xfd,0xd2,0x79,0xab,0xbe,0x5d);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("03c06416-d127-407a-ab4c-fdd279abbe5d") DigitalCableLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DigitalCableLocator, 0x03c06416, 0xd127, 0x407a, 0xab,0x4c, 0xfd,0xd2,0x79,0xab,0xbe,0x5d)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBTLocator coclass
+ */
+
+DEFINE_GUID(CLSID_DVBTLocator, 0x9cd64701, 0xbdf3, 0x4d14, 0x8e,0x03, 0xf1,0x29,0x83,0xd8,0x66,0x64);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("9cd64701-bdf3-4d14-8e03-f12983d86664") DVBTLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBTLocator, 0x9cd64701, 0xbdf3, 0x4d14, 0x8e,0x03, 0xf1,0x29,0x83,0xd8,0x66,0x64)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBTLocator2 coclass
+ */
+
+DEFINE_GUID(CLSID_DVBTLocator2, 0xefe3fa02, 0x45d7, 0x4920, 0xbe,0x96, 0x53,0xfa,0x7f,0x35,0xb0,0xe6);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("efe3fa02-45d7-4920-be96-53fa7f35b0e6") DVBTLocator2;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBTLocator2, 0xefe3fa02, 0x45d7, 0x4920, 0xbe,0x96, 0x53,0xfa,0x7f,0x35,0xb0,0xe6)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBSLocator coclass
+ */
+
+DEFINE_GUID(CLSID_DVBSLocator, 0x1df7d126, 0x4050, 0x47f0, 0xa7,0xcf, 0x4c,0x4c,0xa9,0x24,0x13,0x33);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("1df7d126-4050-47f0-a7cf-4c4ca9241333") DVBSLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBSLocator, 0x1df7d126, 0x4050, 0x47f0, 0xa7,0xcf, 0x4c,0x4c,0xa9,0x24,0x13,0x33)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBCLocator coclass
+ */
+
+DEFINE_GUID(CLSID_DVBCLocator, 0xc531d9fd, 0x9685, 0x4028, 0x8b,0x68, 0x6e,0x12,0x32,0x07,0x9f,0x1e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("c531d9fd-9685-4028-8b68-6e1232079f1e") DVBCLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBCLocator, 0xc531d9fd, 0x9685, 0x4028, 0x8b,0x68, 0x6e,0x12,0x32,0x07,0x9f,0x1e)
+#endif
+#endif
+
+/*****************************************************************************
+ * ISDBSLocator coclass
+ */
+
+DEFINE_GUID(CLSID_ISDBSLocator, 0x6504afed, 0xa629, 0x455c, 0xa7,0xf1, 0x04,0x96,0x4d,0xea,0x5c,0xc4);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("6504afed-a629-455c-a7f1-04964dea5cc4") ISDBSLocator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ISDBSLocator, 0x6504afed, 0xa629, 0x455c, 0xa7,0xf1, 0x04,0x96,0x4d,0xea,0x5c,0xc4)
+#endif
+#endif
+
+/*****************************************************************************
+ * DVBTuneRequest coclass
+ */
+
+DEFINE_GUID(CLSID_DVBTuneRequest, 0x15d6504a, 0x5494, 0x499c, 0x88,0x6c, 0x97,0x3c,0x9e,0x53,0xb9,0xf1);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("15d6504a-5494-499c-886c-973c9e53b9f1") DVBTuneRequest;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(DVBTuneRequest, 0x15d6504a, 0x5494, 0x499c, 0x88,0x6c, 0x97,0x3c,0x9e,0x53,0xb9,0xf1)
+#endif
+#endif
+
+/*****************************************************************************
+ * CreatePropBagOnRegKey coclass
+ */
+
+DEFINE_GUID(CLSID_CreatePropBagOnRegKey, 0x8a674b49, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8a674b49-1f63-11d3-b64c-00c04f79498e") CreatePropBagOnRegKey;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CreatePropBagOnRegKey, 0x8a674b49, 0x1f63, 0x11d3, 0xb6,0x4c, 0x00,0xc0,0x4f,0x79,0x49,0x8e)
+#endif
+#endif
+
+/*****************************************************************************
+ * BroadcastEventService coclass
+ */
+
+DEFINE_GUID(CLSID_BroadcastEventService, 0x0b3ffb92, 0x0919, 0x4934, 0x9d,0x5b, 0x61,0x9c,0x71,0x9d,0x02,0x02);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("0b3ffb92-0919-4934-9d5b-619c719d0202") BroadcastEventService;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BroadcastEventService, 0x0b3ffb92, 0x0919, 0x4934, 0x9d,0x5b, 0x61,0x9c,0x71,0x9d,0x02,0x02)
+#endif
+#endif
+
+/*****************************************************************************
+ * TunerMarshaler coclass
+ */
+
+DEFINE_GUID(CLSID_TunerMarshaler, 0x6438570b, 0x0c08, 0x4a25, 0x95,0x04, 0x80,0x12,0xbb,0x4d,0x50,0xcf);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("6438570b-0c08-4a25-9504-8012bb4d50cf") TunerMarshaler;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(TunerMarshaler, 0x6438570b, 0x0c08, 0x4a25, 0x95,0x04, 0x80,0x12,0xbb,0x4d,0x50,0xcf)
+#endif
+#endif
+
+/*****************************************************************************
+ * PersistTuneXmlUtility coclass
+ */
+
+DEFINE_GUID(CLSID_PersistTuneXmlUtility, 0xe77026b0, 0xb97f, 0x4cbb, 0xb7,0xfb, 0xf4,0xf0,0x3a,0xd6,0x9f,0x11);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("e77026b0-b97f-4cbb-b7fb-f4f03ad69f11") PersistTuneXmlUtility;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(PersistTuneXmlUtility, 0xe77026b0, 0xb97f, 0x4cbb, 0xb7,0xfb, 0xf4,0xf0,0x3a,0xd6,0x9f,0x11)
+#endif
+#endif
+
+/*****************************************************************************
+ * ESEventService coclass
+ */
+
+DEFINE_GUID(CLSID_ESEventService, 0xc20447fc, 0xec60, 0x475e, 0x81,0x3f, 0xd2,0xb0,0xa6,0xde,0xce,0xfe);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("c20447fc-ec60-475e-813f-d2b0a6decefe") ESEventService;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ESEventService, 0xc20447fc, 0xec60, 0x475e, 0x81,0x3f, 0xd2,0xb0,0xa6,0xde,0xce,0xfe)
+#endif
+#endif
+
+/*****************************************************************************
+ * ESEventFactory coclass
+ */
+
+DEFINE_GUID(CLSID_ESEventFactory, 0x8e8a07da, 0x71f8, 0x40c1, 0xa9,0x29, 0x5e,0x3a,0x86,0x8a,0xc2,0xc6);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("8e8a07da-71f8-40c1-a929-5e3a868ac2c6") ESEventFactory;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ESEventFactory, 0x8e8a07da, 0x71f8, 0x40c1, 0xa9,0x29, 0x5e,0x3a,0x86,0x8a,0xc2,0xc6)
+#endif
+#endif
+
+#endif
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __tuner_h__ */
diff --git a/x86_64-w64-mingw32/include/uchar.h b/x86_64-w64-mingw32/include/uchar.h
index 72b377c..30a4418 100644
--- a/x86_64-w64-mingw32/include/uchar.h
+++ b/x86_64-w64-mingw32/include/uchar.h
@@ -30,7 +30,7 @@
 /* Remember that g++ >= 4.4 defines these types only in c++0x mode */
 #if !(defined(__cplusplus) && defined(__GXX_EXPERIMENTAL_CXX0X__)) ||	\
     !defined(__GNUC__) ||						\
-    (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
+    (!defined(__clang__) && (__GNUC__ < 4 || (__GNUC__ == 4 &&	__GNUC_MINOR__ < 4)))
 typedef uint_least16_t char16_t;
 typedef uint_least32_t char32_t;
 #endif
diff --git a/x86_64-w64-mingw32/include/uiviewsettingsinterop.h b/x86_64-w64-mingw32/include/uiviewsettingsinterop.h
new file mode 100644
index 0000000..a097e9f
--- /dev/null
+++ b/x86_64-w64-mingw32/include/uiviewsettingsinterop.h
@@ -0,0 +1,164 @@
+/*** Autogenerated by WIDL 1.6 from include/uiviewsettingsinterop.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __uiviewsettingsinterop_h__
+#define __uiviewsettingsinterop_h__
+
+/* Forward declarations */
+
+#ifndef __IUIViewSettingsInterop_FWD_DEFINED__
+#define __IUIViewSettingsInterop_FWD_DEFINED__
+typedef interface IUIViewSettingsInterop IUIViewSettingsInterop;
+#endif
+
+/* Headers for imported files */
+
+#include <inspectable.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IUIViewSettingsInterop interface
+ */
+#ifndef __IUIViewSettingsInterop_INTERFACE_DEFINED__
+#define __IUIViewSettingsInterop_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IUIViewSettingsInterop, 0x3694dbf9, 0x8f68, 0x44be, 0x8f,0xf5, 0x19,0x5c,0x98,0xed,0xe8,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3694dbf9-8f68-44be-8ff5-195c98ede8a6")
+IUIViewSettingsInterop : public IInspectable
+{
+    virtual HRESULT STDMETHODCALLTYPE GetForWindow(
+        HWND hwnd,
+        REFIID riid,
+        void **ppv) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IUIViewSettingsInterop, 0x3694dbf9, 0x8f68, 0x44be, 0x8f,0xf5, 0x19,0x5c,0x98,0xed,0xe8,0xa6)
+#endif
+#else
+typedef struct IUIViewSettingsInteropVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IUIViewSettingsInterop* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IUIViewSettingsInterop* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IUIViewSettingsInterop* This);
+
+    /*** IInspectable methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetIids)(
+        IUIViewSettingsInterop* This,
+        ULONG *iidCount,
+        IID **iids);
+
+    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+        IUIViewSettingsInterop* This,
+        HSTRING *className);
+
+    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+        IUIViewSettingsInterop* This,
+        TrustLevel *trustLevel);
+
+    /*** IUIViewSettingsInterop methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetForWindow)(
+        IUIViewSettingsInterop* This,
+        HWND hwnd,
+        REFIID riid,
+        void **ppv);
+
+    END_INTERFACE
+} IUIViewSettingsInteropVtbl;
+interface IUIViewSettingsInterop {
+    CONST_VTBL IUIViewSettingsInteropVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IUIViewSettingsInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUIViewSettingsInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUIViewSettingsInterop_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define IUIViewSettingsInterop_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define IUIViewSettingsInterop_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define IUIViewSettingsInterop_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** IUIViewSettingsInterop methods ***/
+#define IUIViewSettingsInterop_GetForWindow(This,hwnd,riid,ppv) (This)->lpVtbl->GetForWindow(This,hwnd,riid,ppv)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IUIViewSettingsInterop_QueryInterface(IUIViewSettingsInterop* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IUIViewSettingsInterop_AddRef(IUIViewSettingsInterop* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IUIViewSettingsInterop_Release(IUIViewSettingsInterop* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT IUIViewSettingsInterop_GetIids(IUIViewSettingsInterop* This,ULONG *iidCount,IID **iids) {
+    return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT IUIViewSettingsInterop_GetRuntimeClassName(IUIViewSettingsInterop* This,HSTRING *className) {
+    return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT IUIViewSettingsInterop_GetTrustLevel(IUIViewSettingsInterop* This,TrustLevel *trustLevel) {
+    return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** IUIViewSettingsInterop methods ***/
+static FORCEINLINE HRESULT IUIViewSettingsInterop_GetForWindow(IUIViewSettingsInterop* This,HWND hwnd,REFIID riid,void **ppv) {
+    return This->lpVtbl->GetForWindow(This,hwnd,riid,ppv);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IUIViewSettingsInterop_GetForWindow_Proxy(
+    IUIViewSettingsInterop* This,
+    HWND hwnd,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IUIViewSettingsInterop_GetForWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IUIViewSettingsInterop_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __uiviewsettingsinterop_h__ */
diff --git a/x86_64-w64-mingw32/include/urlmon.h b/x86_64-w64-mingw32/include/urlmon.h
index 4c23f87..e1b6287 100644
--- a/x86_64-w64-mingw32/include/urlmon.h
+++ b/x86_64-w64-mingw32/include/urlmon.h
@@ -298,8 +298,6 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#pragma comment(lib,"uuid.lib")
-
 #include <winapifamily.h>
 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
diff --git a/x86_64-w64-mingw32/include/usbioctl.h b/x86_64-w64-mingw32/include/usbioctl.h
index 8bbbc2c..57498b5 100644
--- a/x86_64-w64-mingw32/include/usbioctl.h
+++ b/x86_64-w64-mingw32/include/usbioctl.h
@@ -574,7 +574,9 @@
   __C89_NAMELESS struct {
     ULONG DeviceIsOperatingAtSuperSpeedOrHigher :1;
     ULONG DeviceIsSuperSpeedCapableOrHigher :1;
-    ULONG ReservedMBZ :30;
+    ULONG DeviceIsOperatingAtSuperSpeedPlusOrHigher :1;
+    ULONG DeviceIsSuperSpeedPlusCapableOrHigher :1;
+    ULONG ReservedMBZ :28;
   };
 } USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS,*PUSB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS;
 
diff --git a/x86_64-w64-mingw32/include/usbspec.h b/x86_64-w64-mingw32/include/usbspec.h
index 7ace8a3..86557d8 100644
--- a/x86_64-w64-mingw32/include/usbspec.h
+++ b/x86_64-w64-mingw32/include/usbspec.h
@@ -213,6 +213,7 @@
 #define USB_DEVICE_CAPABILITY_USB20_EXTENSION 0x02
 #define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 0x03
 #define USB_DEVICE_CAPABILITY_CONTAINER_ID 0x04
+#define USB_DEVICE_CAPABILITY_BILLBOARD 0x0D
 
 typedef struct _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR {
   UCHAR bLength;
@@ -399,7 +400,8 @@
     } Bulk;
     struct {
       UCHAR Mult:2;
-      UCHAR Reserved2:6;
+      UCHAR Reserved2:5;
+      UCHAR SspCompanion:1;
     } Isochronous;
   } bmAttributes;
   USHORT wBytesPerInterval;
@@ -633,6 +635,37 @@
   USHORT TransitionTimeFromD3;
 } USB_INTERFACE_POWER_DESCRIPTOR,*PUSB_INTERFACE_POWER_DESCRIPTOR;
 
+typedef struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR {
+  UCHAR bLength;
+  UCHAR bDescriptorType;
+  UCHAR bDevCapabilityType;
+  UCHAR iAddtionalInfoURL;
+  UCHAR bNumberOfAlternateModes;
+  UCHAR bPreferredAlternateMode;
+  union {
+    USHORT AsUshort;
+    struct {
+      USHORT VConnPowerNeededForFullFunctionality:3;
+      USHORT Reserved:12;
+      USHORT NoVconnPowerRequired:1;
+    };
+  } VconnPower;
+  UCHAR bmConfigured[32];
+  ULONG bReserved;
+  struct {
+    USHORT wSVID;
+    UCHAR bAlternateMode;
+    UCHAR iAlternateModeSetting;
+  } AlternateMode[1];
+} USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR;
+
+typedef struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR {
+  UCHAR bLength;
+  UCHAR bDescriptorType;
+  USHORT wReserved;
+  ULONG dwBytesPerInterval;
+} USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR,*PUSB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR;
+
 #include <poppack.h>
 
 #endif
diff --git a/x86_64-w64-mingw32/include/versionhelpers.h b/x86_64-w64-mingw32/include/versionhelpers.h
new file mode 100644
index 0000000..25ea414
--- /dev/null
+++ b/x86_64-w64-mingw32/include/versionhelpers.h
@@ -0,0 +1,79 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#ifndef _INC_VERSIONHELPERS
+#define _INC_VERSIONHELPERS
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIDL__)
+
+#ifdef __cplusplus
+#define VERSIONHELPERAPI inline bool
+#else
+#define VERSIONHELPERAPI FORCEINLINE BOOL
+#endif
+
+VERSIONHELPERAPI IsWindowsVersionOrGreater(WORD major, WORD minor, WORD servpack)
+{
+    OSVERSIONINFOEXW vi = {sizeof(vi),major,minor,0,0,{0},servpack};
+    return VerifyVersionInfoW(&vi, VER_MAJORVERSION|VER_MINORVERSION|VER_SERVICEPACKMAJOR,
+        VerSetConditionMask(VerSetConditionMask(VerSetConditionMask(0,
+            VER_MAJORVERSION,VER_GREATER_EQUAL),
+            VER_MINORVERSION,VER_GREATER_EQUAL),
+            VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL));
+}
+
+VERSIONHELPERAPI IsWindowsXPOrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 0);
+}
+
+VERSIONHELPERAPI IsWindowsXPSP1OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 1);
+}
+
+VERSIONHELPERAPI IsWindowsXPSP2OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 2);
+}
+
+VERSIONHELPERAPI IsWindowsXPSP3OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 3);
+}
+
+VERSIONHELPERAPI IsWindowsVistaOrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
+}
+
+VERSIONHELPERAPI IsWindowsVistaSP1OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 1);
+}
+
+VERSIONHELPERAPI IsWindowsVistaSP2OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 2);
+}
+
+VERSIONHELPERAPI IsWindows7OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 0);
+}
+
+VERSIONHELPERAPI IsWindows7SP1OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 1);
+}
+
+VERSIONHELPERAPI IsWindows8OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
+}
+
+VERSIONHELPERAPI IsWindows8Point1OrGreater(void) {
+    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINBLUE), LOBYTE(_WIN32_WINNT_WINBLUE), 0);
+}
+
+VERSIONHELPERAPI IsWindowsServer(void) {
+    OSVERSIONINFOEXW vi = {sizeof(vi),0,0,0,0,{0},0,0,0,VER_NT_WORKSTATION};
+    return !VerifyVersionInfoW(&vi, VER_PRODUCT_TYPE, VerSetConditionMask(0, VER_PRODUCT_TYPE, VER_EQUAL));
+}
+
+#endif
+#endif
diff --git a/x86_64-w64-mingw32/include/wbemads.h b/x86_64-w64-mingw32/include/wbemads.h
index e0c9f92..e181dfc 100644
--- a/x86_64-w64-mingw32/include/wbemads.h
+++ b/x86_64-w64-mingw32/include/wbemads.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/wbemads.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/wbemads.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/include/wbemidl.h b/x86_64-w64-mingw32/include/wbemidl.h
index a055944..7c22158 100644
--- a/x86_64-w64-mingw32/include/wbemidl.h
+++ b/x86_64-w64-mingw32/include/wbemidl.h
@@ -6,8 +6,8 @@
 #ifndef __WBEMIDL_H_
 #define __WBEMIDL_H_
 
-#include <winapifamily.h>
-
+#include <winapifamily.h>

+

 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
 
 #include <wbemcli.h>
diff --git a/x86_64-w64-mingw32/include/wdstpdi.h b/x86_64-w64-mingw32/include/wdstpdi.h
index 2031aa7..2232998 100644
--- a/x86_64-w64-mingw32/include/wdstpdi.h
+++ b/x86_64-w64-mingw32/include/wdstpdi.h
@@ -92,6 +92,6 @@
 
 #ifdef __cplusplus
 }
-#endi
+#endif
 #endif /*(_WIN32_WINNT >= 0x0600)*/
 #endif /*_INC_WDSTPDI*/
diff --git a/x86_64-w64-mingw32/include/wincodec.h b/x86_64-w64-mingw32/include/wincodec.h
index 755a231..a863a6c 100644
--- a/x86_64-w64-mingw32/include/wincodec.h
+++ b/x86_64-w64-mingw32/include/wincodec.h
@@ -312,6 +312,9 @@
 DEFINE_GUID(GUID_WICPixelFormat32bppBGR, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0e);
 DEFINE_GUID(GUID_WICPixelFormat32bppBGRA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0f);
 DEFINE_GUID(GUID_WICPixelFormat32bppPBGRA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x10);
+DEFINE_GUID(GUID_WICPixelFormat32bppRGB, 0xd98c6b95,0x3efe,0x47d6,0xbb,0x25,0xeb,0x17,0x48,0xab,0x0c,0xf1);
+DEFINE_GUID(GUID_WICPixelFormat32bppRGBA, 0xf5c7ad2d,0x6a8d,0x43dd,0xa7,0xa8,0xa2,0x99,0x35,0x26,0x1a,0xe9);
+DEFINE_GUID(GUID_WICPixelFormat32bppPRGBA, 0x3cc4a650,0xa527,0x4d37,0xa9,0x16,0x31,0x42,0xc7,0xeb,0xed,0xba);
 DEFINE_GUID(GUID_WICPixelFormat48bppRGB, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x15);
 DEFINE_GUID(GUID_WICPixelFormat64bppRGBA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x16);
 DEFINE_GUID(GUID_WICPixelFormat64bppPRGBA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x17);
diff --git a/x86_64-w64-mingw32/include/windns.h b/x86_64-w64-mingw32/include/windns.h
index 35d4222..bf710f2 100644
--- a/x86_64-w64-mingw32/include/windns.h
+++ b/x86_64-w64-mingw32/include/windns.h
@@ -758,7 +758,11 @@
 
 #define DnsFreeRecordListDeep DnsFreeRecordList
 
+#if(_WIN32_WINNT >= 0x0501)
+  #define DnsRecordListFree(p,t)  DnsFree(p,DnsFreeRecordList)
+#else
   VOID WINAPI DnsRecordListFree(PDNS_RECORD pRecordList,DNS_FREE_TYPE FreeType);
+#endif /* _WIN32_WINNT >= 0x0501 */
 
 #define DNS_QUERY_STANDARD 0x00000000
 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001
diff --git a/x86_64-w64-mingw32/include/wingdi.h b/x86_64-w64-mingw32/include/wingdi.h
index 1dd0efa..e0ae2ec 100644
--- a/x86_64-w64-mingw32/include/wingdi.h
+++ b/x86_64-w64-mingw32/include/wingdi.h
@@ -2071,23 +2071,23 @@
   } DISPLAYCONFIG_RATIONAL;
 
   typedef enum {
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 =  0,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO =  1,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO =  2,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO =  3,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI =  4,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI =  5,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS =  6,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN  =  8,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI =  9,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
-    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = (int) -1,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = (int) 0,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = (int) 1,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = (int) 2,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = (int) 3,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = (int) 4,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = (int) 5,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = (int) 6,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN  = (int) 8,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = (int) 9,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = (int) 10,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = (int) 11,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = (int) 12,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = (int) 13,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = (int) 14,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = (int) 0x80000000,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = (int) 0xFFFFFFFF
   } DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
 
   typedef enum {
diff --git a/x86_64-w64-mingw32/include/winnt.h b/x86_64-w64-mingw32/include/winnt.h
index b703125..84eb36a 100644
--- a/x86_64-w64-mingw32/include/winnt.h
+++ b/x86_64-w64-mingw32/include/winnt.h
@@ -816,6 +816,9 @@
 #define PRODUCT_CORE                              0x65
 #define PRODUCT_PROFESSIONAL_WMC                  0x67
 #define PRODUCT_MOBILE_CORE                       0x68
+#define PRODUCT_EDUCATION                         0x79
+#define PRODUCT_EDUCATION_N                       0x7a
+#define PRODUCT_MOBILE_ENTERPRISE                 0x85
 
 #define PRODUCT_UNLICENSED                        0xabcdabcd
 
@@ -1498,21 +1501,16 @@
 
     /* LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */
     /* LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand); moved to psdk_inc/intrin-impl.h */
-    LONG InterlockedAdd(LONG volatile *Addend,LONG Value);
+    /* LONG InterlockedAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */
     /* LONG64 InterlockedIncrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */
     /* LONG64 InterlockedDecrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */
     /* LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value); moved to psdk_inc/intrin-impl.h */
-
-    __forceinline LONG InterlockedAdd(LONG volatile *Addend,LONG Value) { return InterlockedExchangeAdd(Addend,Value) + Value; }
-
     /* LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */
-    LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value);
+    /* LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */
     /* LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand); moved to psdk_inc/intrin-impl.h */
     /* PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand); moved to psdk_inc/intrin-impl.h */
     /* PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value); moved to psdk_inc/intrin-impl.h */
 
-    __forceinline LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value) { return InterlockedExchangeAdd64(Addend,Value) + Value; }
-
 #define CacheLineFlush(Address) _mm_clflush(Address)
 
 # if defined(__cplusplus)
@@ -1958,6 +1956,8 @@
 #define BitScanReverse _BitScanReverse
 
 #define InterlockedCompareExchange16 _InterlockedCompareExchange16
+#define InterlockedAdd _InterlockedAdd
+#define InterlockedAdd64 _InterlockedAdd64
 
 #ifdef _PREFIX_
     /* BYTE __readfsbyte(DWORD Offset); moved to psdk_inc/intrin-impl.h */
@@ -1998,15 +1998,15 @@
 
 #define DbgRaiseAssertionFailure __int2c
 
-  __CRT_INLINE struct _TEB *NtCurrentTeb(void)
+  FORCEINLINE struct _TEB *NtCurrentTeb(void)
   {
     return (struct _TEB *)__readfsdword(PcTeb);
   }
-  __CRT_INLINE PVOID GetCurrentFiber(void)
+  FORCEINLINE PVOID GetCurrentFiber(void)
   {
     return(PVOID)__readfsdword(0x10);
   }
-  __CRT_INLINE PVOID GetFiberData(void)
+  FORCEINLINE PVOID GetFiberData(void)
   {
       return *(PVOID *)GetCurrentFiber();
   }
@@ -5881,6 +5881,7 @@
 #define IMAGE_SUBSYSTEM_XBOX 14
 #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16
 
+#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020
 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
@@ -5889,6 +5890,7 @@
 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
 #define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000
 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
+#define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000
 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
 
 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
@@ -8365,6 +8367,10 @@
     struct _TEB *NtCurrentTeb (VOID);
     PVOID GetCurrentFiber (VOID);
     PVOID GetFiberData (VOID);
+    FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb;
+    __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb));
+    return teb; }
+    FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); }
     FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); }
 #endif /* arm */
 
diff --git a/x86_64-w64-mingw32/include/winsdkver.h b/x86_64-w64-mingw32/include/winsdkver.h
index 45526e8..62e9182 100644
--- a/x86_64-w64-mingw32/include/winsdkver.h
+++ b/x86_64-w64-mingw32/include/winsdkver.h
@@ -10,12 +10,12 @@
 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 
-#define _WIN32_MAXVER         0x0602
-#define _WIN32_WINDOWS_MAXVER 0x0602
-#define NTDDI_MAXVER          0x0602
-#define _WIN32_IE_MAXVER      0x0b00
-#define _WIN32_WINNT_MAXVER   0x0602
-#define WINVER_MAXVER         0x0602
+#define _WIN32_MAXVER         0x0A00
+#define _WIN32_WINDOWS_MAXVER 0x0A00
+#define NTDDI_MAXVER          0x0A00
+#define _WIN32_IE_MAXVER      0x0A00
+#define _WIN32_WINNT_MAXVER   0x0A00
+#define WINVER_MAXVER         0x0A00
 
 #endif
 #endif
diff --git a/x86_64-w64-mingw32/include/winstring.h b/x86_64-w64-mingw32/include/winstring.h
index c37097c..76131d8 100644
--- a/x86_64-w64-mingw32/include/winstring.h
+++ b/x86_64-w64-mingw32/include/winstring.h
@@ -11,7 +11,9 @@
 #include <rpc.h>
 #include <hstring.h>
 
-#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 void __RPC_USER HSTRING_UserFree(unsigned long *pFlags, HSTRING *ppidl);
 
@@ -31,8 +33,6 @@
 unsigned char* __RPC_USER HSTRING_UserUnmarshal64(unsigned long *pFlags, unsigned char *pBuffer, HSTRING *ppidl);
 #endif
 
-/* */
-
 HRESULT WINAPI WindowsCompareStringOrdinal(HSTRING string1, HSTRING string2, INT32 *result);
 
 HRESULT WINAPI WindowsConcatString(HSTRING string1, HSTRING string2, HSTRING *newString);
@@ -73,5 +73,8 @@
 
 HRESULT WINAPI WindowsTrimStringStart(HSTRING string, HSTRING trimString, HSTRING *newString);
 
+#ifdef __cplusplus
+}
 #endif
+
 #endif
diff --git a/x86_64-w64-mingw32/include/wmcodecdsp.h b/x86_64-w64-mingw32/include/wmcodecdsp.h
index f314db9..2f1afb1 100644
--- a/x86_64-w64-mingw32/include/wmcodecdsp.h
+++ b/x86_64-w64-mingw32/include/wmcodecdsp.h
@@ -607,6 +607,114 @@
 #endif /* defined __cplusplus */
 #endif /* defined __CMSH264DecoderMFT_FWD_DEFINED__ */
 
+#ifndef __CMSH264EncoderMFT_FWD_DEFINED__
+#define __CMSH264EncoderMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSH264EncoderMFT CMSH264EncoderMFT;
+#else
+typedef struct CMSH264EncoderMFT CMSH264EncoderMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSH264EncoderMFT_FWD_DEFINED__ */
+
+#ifndef __CMSH264RemuxMFT_FWD_DEFINED__
+#define __CMSH264RemuxMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSH264RemuxMFT CMSH264RemuxMFT;
+#else
+typedef struct CMSH264RemuxMFT CMSH264RemuxMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSH264RemuxMFT_FWD_DEFINED__ */
+
+#ifndef __CMSAACDecMFT_FWD_DEFINED__
+#define __CMSAACDecMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSAACDecMFT CMSAACDecMFT;
+#else
+typedef struct CMSAACDecMFT CMSAACDecMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSAACDecMFT_FWD_DEFINED__ */
+
+#ifndef __AACMFTEncoder_FWD_DEFINED__
+#define __AACMFTEncoder_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AACMFTEncoder AACMFTEncoder;
+#else
+typedef struct AACMFTEncoder AACMFTEncoder;
+#endif /* defined __cplusplus */
+#endif /* defined __AACMFTEncoder_FWD_DEFINED__ */
+
+#ifndef __CMSDDPlusDecMFT_FWD_DEFINED__
+#define __CMSDDPlusDecMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSDDPlusDecMFT CMSDDPlusDecMFT;
+#else
+typedef struct CMSDDPlusDecMFT CMSDDPlusDecMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSDDPlusDecMFT_FWD_DEFINED__ */
+
+#ifndef __CMPEG2VideoEncoderMFT_FWD_DEFINED__
+#define __CMPEG2VideoEncoderMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMPEG2VideoEncoderMFT CMPEG2VideoEncoderMFT;
+#else
+typedef struct CMPEG2VideoEncoderMFT CMPEG2VideoEncoderMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMPEG2VideoEncoderMFT_FWD_DEFINED__ */
+
+#ifndef __CMPEG2AudioEncoderMFT_FWD_DEFINED__
+#define __CMPEG2AudioEncoderMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMPEG2AudioEncoderMFT CMPEG2AudioEncoderMFT;
+#else
+typedef struct CMPEG2AudioEncoderMFT CMPEG2AudioEncoderMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMPEG2AudioEncoderMFT_FWD_DEFINED__ */
+
+#ifndef __CMSMPEGDecoderMFT_FWD_DEFINED__
+#define __CMSMPEGDecoderMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSMPEGDecoderMFT CMSMPEGDecoderMFT;
+#else
+typedef struct CMSMPEGDecoderMFT CMSMPEGDecoderMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSMPEGDecoderMFT_FWD_DEFINED__ */
+
+#ifndef __CMSMPEGAudDecMFT_FWD_DEFINED__
+#define __CMSMPEGAudDecMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSMPEGAudDecMFT CMSMPEGAudDecMFT;
+#else
+typedef struct CMSMPEGAudDecMFT CMSMPEGAudDecMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSMPEGAudDecMFT_FWD_DEFINED__ */
+
+#ifndef __CMSDolbyDigitalEncMFT_FWD_DEFINED__
+#define __CMSDolbyDigitalEncMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSDolbyDigitalEncMFT CMSDolbyDigitalEncMFT;
+#else
+typedef struct CMSDolbyDigitalEncMFT CMSDolbyDigitalEncMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSDolbyDigitalEncMFT_FWD_DEFINED__ */
+
+#ifndef __MP3ACMCodecWrapper_FWD_DEFINED__
+#define __MP3ACMCodecWrapper_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MP3ACMCodecWrapper MP3ACMCodecWrapper;
+#else
+typedef struct MP3ACMCodecWrapper MP3ACMCodecWrapper;
+#endif /* defined __cplusplus */
+#endif /* defined __MP3ACMCodecWrapper_FWD_DEFINED__ */
+
+#ifndef __CMSVideoDSPMFT_FWD_DEFINED__
+#define __CMSVideoDSPMFT_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CMSVideoDSPMFT CMSVideoDSPMFT;
+#else
+typedef struct CMSVideoDSPMFT CMSVideoDSPMFT;
+#endif /* defined __cplusplus */
+#endif /* defined __CMSVideoDSPMFT_FWD_DEFINED__ */
+
 /* Headers for imported files */
 
 #include <mediaobj.h>
@@ -1553,6 +1661,162 @@
 #endif
 #endif
 
+/*****************************************************************************
+ * CMSH264EncoderMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSH264EncoderMFT, 0x6ca50344, 0x051a, 0x4ded, 0x97,0x79, 0xa4,0x33,0x05,0x16,0x5e,0x35);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("6ca50344-051a-4ded-9779-a43305165e35") CMSH264EncoderMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSH264EncoderMFT, 0x6ca50344, 0x051a, 0x4ded, 0x97,0x79, 0xa4,0x33,0x05,0x16,0x5e,0x35)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSH264RemuxMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSH264RemuxMFT, 0x05a47ebb, 0x8bf0, 0x4cbf, 0xad,0x2f, 0x3b,0x71,0xd7,0x58,0x66,0xf5);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("05a47ebb-8bf0-4cbf-ad2f-3b71d75866f5") CMSH264RemuxMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSH264RemuxMFT, 0x05a47ebb, 0x8bf0, 0x4cbf, 0xad,0x2f, 0x3b,0x71,0xd7,0x58,0x66,0xf5)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSAACDecMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSAACDecMFT, 0x32d186a7, 0x218f, 0x4c75, 0x88,0x76, 0xdd,0x77,0x27,0x3a,0x89,0x99);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("32d186a7-218f-4c75-8876-dd77273a8999") CMSAACDecMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSAACDecMFT, 0x32d186a7, 0x218f, 0x4c75, 0x88,0x76, 0xdd,0x77,0x27,0x3a,0x89,0x99)
+#endif
+#endif
+
+/*****************************************************************************
+ * AACMFTEncoder coclass
+ */
+
+DEFINE_GUID(CLSID_AACMFTEncoder, 0x93af0c51, 0x2275, 0x45d2, 0xa3,0x5b, 0xf2,0xba,0x21,0xca,0xed,0x00);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("93af0c51-2275-45d2-a35b-f2ba21caed00") AACMFTEncoder;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(AACMFTEncoder, 0x93af0c51, 0x2275, 0x45d2, 0xa3,0x5b, 0xf2,0xba,0x21,0xca,0xed,0x00)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSDDPlusDecMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSDDPlusDecMFT, 0x177c0afe, 0x900b, 0x48d4, 0x9e,0x4c, 0x57,0xad,0xd2,0x50,0xb3,0xd4);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("177c0afe-900b-48d4-9e4c-57add250b3d4") CMSDDPlusDecMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSDDPlusDecMFT, 0x177c0afe, 0x900b, 0x48d4, 0x9e,0x4c, 0x57,0xad,0xd2,0x50,0xb3,0xd4)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMPEG2VideoEncoderMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMPEG2VideoEncoderMFT, 0xe6335f02, 0x80b7, 0x4dc4, 0xad,0xfa, 0xdf,0xe7,0x21,0x0d,0x20,0xd5);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("e6335f02-80b7-4dc4-adfa-dfe7210d20d5") CMPEG2VideoEncoderMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMPEG2VideoEncoderMFT, 0xe6335f02, 0x80b7, 0x4dc4, 0xad,0xfa, 0xdf,0xe7,0x21,0x0d,0x20,0xd5)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMPEG2AudioEncoderMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMPEG2AudioEncoderMFT, 0x46a4dd5c, 0x73f8, 0x4304, 0x94,0xdf, 0x30,0x8f,0x76,0x09,0x74,0xf4);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("46a4dd5c-73f8-4304-94df-308f760974f4") CMPEG2AudioEncoderMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMPEG2AudioEncoderMFT, 0x46a4dd5c, 0x73f8, 0x4304, 0x94,0xdf, 0x30,0x8f,0x76,0x09,0x74,0xf4)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSMPEGDecoderMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSMPEGDecoderMFT, 0x2d709e52, 0x123f, 0x49b5, 0x9c,0xbc, 0x9a,0xf5,0xcd,0xe2,0x8f,0xb9);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("2d709e52-123f-49b5-9cbc-9af5cde28fb9") CMSMPEGDecoderMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSMPEGDecoderMFT, 0x2d709e52, 0x123f, 0x49b5, 0x9c,0xbc, 0x9a,0xf5,0xcd,0xe2,0x8f,0xb9)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSMPEGAudDecMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSMPEGAudDecMFT, 0x70707b39, 0xb2ca, 0x4015, 0xab,0xea, 0xf8,0x44,0x7d,0x22,0xd8,0x8b);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("70707b39-b2ca-4015-abea-f8447d22d88b") CMSMPEGAudDecMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSMPEGAudDecMFT, 0x70707b39, 0xb2ca, 0x4015, 0xab,0xea, 0xf8,0x44,0x7d,0x22,0xd8,0x8b)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSDolbyDigitalEncMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSDolbyDigitalEncMFT, 0xac3315c9, 0xf481, 0x45d7, 0x82,0x6c, 0x0b,0x40,0x6c,0x1f,0x64,0xb8);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("ac3315c9-f481-45d7-826c-0b406c1f64b8") CMSDolbyDigitalEncMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSDolbyDigitalEncMFT, 0xac3315c9, 0xf481, 0x45d7, 0x82,0x6c, 0x0b,0x40,0x6c,0x1f,0x64,0xb8)
+#endif
+#endif
+
+/*****************************************************************************
+ * MP3ACMCodecWrapper coclass
+ */
+
+DEFINE_GUID(CLSID_MP3ACMCodecWrapper, 0x11103421, 0x354c, 0x4cca, 0xa7,0xa3, 0x1a,0xff,0x9a,0x5b,0x67,0x01);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("11103421-354c-4cca-a7a3-1aff9a5b6701") MP3ACMCodecWrapper;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(MP3ACMCodecWrapper, 0x11103421, 0x354c, 0x4cca, 0xa7,0xa3, 0x1a,0xff,0x9a,0x5b,0x67,0x01)
+#endif
+#endif
+
+/*****************************************************************************
+ * CMSVideoDSPMFT coclass
+ */
+
+DEFINE_GUID(CLSID_CMSVideoDSPMFT, 0x51571744, 0x7fe4, 0x4ff2, 0xa4,0x98, 0x2d,0xc3,0x4f,0xf7,0x4f,0x1b);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("51571744-7fe4-4ff2-a498-2dc34ff74f1b") CMSVideoDSPMFT;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(CMSVideoDSPMFT, 0x51571744, 0x7fe4, 0x4ff2, 0xa4,0x98, 0x2d,0xc3,0x4f,0xf7,0x4f,0x1b)
+#endif
+#endif
+
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/x86_64-w64-mingw32/include/wmsdkidl.h b/x86_64-w64-mingw32/include/wmsdkidl.h
index 5ff3d9e..24952a6 100644
--- a/x86_64-w64-mingw32/include/wmsdkidl.h
+++ b/x86_64-w64-mingw32/include/wmsdkidl.h
@@ -72,6 +72,41 @@
 typedef interface IWMReader IWMReader;
 #endif
 
+#ifndef __IWMPlayerHook_FWD_DEFINED__
+#define __IWMPlayerHook_FWD_DEFINED__
+typedef interface IWMPlayerHook IWMPlayerHook;
+#endif
+
+#ifndef __IWMReaderAdvanced_FWD_DEFINED__
+#define __IWMReaderAdvanced_FWD_DEFINED__
+typedef interface IWMReaderAdvanced IWMReaderAdvanced;
+#endif
+
+#ifndef __IWMReaderAdvanced2_FWD_DEFINED__
+#define __IWMReaderAdvanced2_FWD_DEFINED__
+typedef interface IWMReaderAdvanced2 IWMReaderAdvanced2;
+#endif
+
+#ifndef __IWMReaderAdvanced3_FWD_DEFINED__
+#define __IWMReaderAdvanced3_FWD_DEFINED__
+typedef interface IWMReaderAdvanced3 IWMReaderAdvanced3;
+#endif
+
+#ifndef __IWMReaderAdvanced4_FWD_DEFINED__
+#define __IWMReaderAdvanced4_FWD_DEFINED__
+typedef interface IWMReaderAdvanced4 IWMReaderAdvanced4;
+#endif
+
+#ifndef __IWMReaderAdvanced5_FWD_DEFINED__
+#define __IWMReaderAdvanced5_FWD_DEFINED__
+typedef interface IWMReaderAdvanced5 IWMReaderAdvanced5;
+#endif
+
+#ifndef __IWMReaderAdvanced6_FWD_DEFINED__
+#define __IWMReaderAdvanced6_FWD_DEFINED__
+typedef interface IWMReaderAdvanced6 IWMReaderAdvanced6;
+#endif
+
 #ifndef __IWMSyncReader_FWD_DEFINED__
 #define __IWMSyncReader_FWD_DEFINED__
 typedef interface IWMSyncReader IWMSyncReader;
@@ -149,6 +184,25 @@
     DWORD dwTotalSampleDropsInCodec;
     DWORD dwTotalSampleDropsInMultiplexer;
 } WM_WRITER_STATISTICS_EX;
+typedef struct _WMReaderStatistics {
+    DWORD cbSize;
+    DWORD dwBandwidth;
+    DWORD cPacketsReceived;
+    DWORD cPacketsRecovered;
+    DWORD cPacketsLost;
+    WORD wQuality;
+} WM_READER_STATISTICS;
+typedef struct _WMReaderClientInfo {
+    DWORD cbSize;
+    WCHAR *wszLang;
+    WCHAR *wszBrowserUserAgent;
+    WCHAR *wszBrowserWebPage;
+    QWORD qwReserved;
+    LPARAM *pReserved;
+    WCHAR *wszHostExe;
+    QWORD qwHostVersion;
+    WCHAR *wszPlayerUserAgent;
+} WM_READER_CLIENTINFO;
 typedef enum WMT_ATTR_DATATYPE {
     WMT_TYPE_DWORD = 0,
     WMT_TYPE_STRING = 1,
@@ -224,6 +278,19 @@
     WMT_VER_8_0 = 0x80000,
     WMT_VER_9_0 = 0x90000
 } WMT_VERSION;
+typedef enum WMT_PLAY_MODE {
+    WMT_PLAY_MODE_AUTOSELECT = 0,
+    WMT_PLAY_MODE_LOCAL = 1,
+    WMT_PLAY_MODE_DOWNLOAD = 2,
+    WMT_PLAY_MODE_STREAMING = 3
+} WMT_PLAY_MODE;
+typedef enum tagWMT_OFFSET_FORMAT {
+    WMT_OFFSET_FORMAT_100NS = 0,
+    WMT_OFFSET_FORMAT_FRAME_NUMBERS = 1,
+    WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = 2,
+    WMT_OFFSET_FORMAT_TIMECODE = 3,
+    WMT_OFFSET_FORMAT_100NS_APPROXIMATE = 4
+} WMT_OFFSET_FORMAT;
 typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
 /*****************************************************************************
  * IWMStatusCallback interface
@@ -2271,6 +2338,3201 @@
 #endif  /* __IWMReader_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
+ * IWMPlayerHook interface
+ */
+#ifndef __IWMPlayerHook_INTERFACE_DEFINED__
+#define __IWMPlayerHook_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e5b7ca9a-0f1c-4f66-9002-74ec50d8b304")
+IWMPlayerHook : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE PreDecode(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04)
+#endif
+#else
+typedef struct IWMPlayerHookVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPlayerHook* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPlayerHook* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPlayerHook* This);
+
+    /*** IWMPlayerHook methods ***/
+    HRESULT (STDMETHODCALLTYPE *PreDecode)(
+        IWMPlayerHook* This);
+
+    END_INTERFACE
+} IWMPlayerHookVtbl;
+interface IWMPlayerHook {
+    CONST_VTBL IWMPlayerHookVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPlayerHook_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPlayerHook_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPlayerHook_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPlayerHook methods ***/
+#define IWMPlayerHook_PreDecode(This) (This)->lpVtbl->PreDecode(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPlayerHook_QueryInterface(IWMPlayerHook* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPlayerHook_AddRef(IWMPlayerHook* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPlayerHook_Release(IWMPlayerHook* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPlayerHook methods ***/
+static FORCEINLINE HRESULT IWMPlayerHook_PreDecode(IWMPlayerHook* This) {
+    return This->lpVtbl->PreDecode(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMPlayerHook_PreDecode_Proxy(
+    IWMPlayerHook* This);
+void __RPC_STUB IWMPlayerHook_PreDecode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMPlayerHook_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced interface
+ */
+#ifndef __IWMReaderAdvanced_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("96406bea-2b2b-11d3-b36b-00c04f6108ff")
+IWMReaderAdvanced : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetUserProvidedClock(
+        WINBOOL fUserClock) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserProvidedClock(
+        WINBOOL *pfUserClock) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeliverTime(
+        QWORD cnsTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetManualStreamSelection(
+        WINBOOL fSelection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetManualStreamSelection(
+        WINBOOL *pfSelection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStreamsSelected(
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStreamSelected(
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetReceiveSelectionCallbacks(
+        WINBOOL fGetCallbacks) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReceiveSelectionCallbacks(
+        WINBOOL *pfGetCallbacks) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetReceiveStreamSamples(
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReceiveStreamSamples(
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAllocateForOutput(
+        DWORD dwOutputNum,
+        WINBOOL fAllocate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllocateForOutput(
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAllocateForStream(
+        WORD wStreamNum,
+        WINBOOL fAllocate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllocateForStream(
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStatistics(
+        WM_READER_STATISTICS *pStatistics) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClientInfo(
+        WM_READER_CLIENTINFO *pClientInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaxOutputSampleSize(
+        DWORD dwOutput,
+        DWORD *pcbMax) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaxStreamSampleSize(
+        WORD wStream,
+        DWORD *pcbMax) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NotifyLateDelivery(
+        QWORD cnsLateness) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
+#endif
+#else
+typedef struct IWMReaderAdvancedVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced* This,
+        QWORD cnsLateness);
+
+    END_INTERFACE
+} IWMReaderAdvancedVtbl;
+interface IWMReaderAdvanced {
+    CONST_VTBL IWMReaderAdvancedVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced_QueryInterface(IWMReaderAdvanced* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced_AddRef(IWMReaderAdvanced* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced_Release(IWMReaderAdvanced* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_DeliverTime(IWMReaderAdvanced* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetStreamsSelected(IWMReaderAdvanced* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetStreamSelected(IWMReaderAdvanced* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForStream(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForStream(IWMReaderAdvanced* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetStatistics(IWMReaderAdvanced* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_SetClientInfo(IWMReaderAdvanced* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxOutputSampleSize(IWMReaderAdvanced* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxStreamSampleSize(IWMReaderAdvanced* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced_NotifyLateDelivery(IWMReaderAdvanced* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetUserProvidedClock_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL fUserClock);
+void __RPC_STUB IWMReaderAdvanced_SetUserProvidedClock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetUserProvidedClock_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL *pfUserClock);
+void __RPC_STUB IWMReaderAdvanced_GetUserProvidedClock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_DeliverTime_Proxy(
+    IWMReaderAdvanced* This,
+    QWORD cnsTime);
+void __RPC_STUB IWMReaderAdvanced_DeliverTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetManualStreamSelection_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL fSelection);
+void __RPC_STUB IWMReaderAdvanced_SetManualStreamSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetManualStreamSelection_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL *pfSelection);
+void __RPC_STUB IWMReaderAdvanced_GetManualStreamSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetStreamsSelected_Proxy(
+    IWMReaderAdvanced* This,
+    WORD cStreamCount,
+    WORD *pwStreamNumbers,
+    WMT_STREAM_SELECTION *pSelections);
+void __RPC_STUB IWMReaderAdvanced_SetStreamsSelected_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetStreamSelected_Proxy(
+    IWMReaderAdvanced* This,
+    WORD wStreamNum,
+    WMT_STREAM_SELECTION *pSelection);
+void __RPC_STUB IWMReaderAdvanced_GetStreamSelected_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetReceiveSelectionCallbacks_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL fGetCallbacks);
+void __RPC_STUB IWMReaderAdvanced_SetReceiveSelectionCallbacks_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetReceiveSelectionCallbacks_Proxy(
+    IWMReaderAdvanced* This,
+    WINBOOL *pfGetCallbacks);
+void __RPC_STUB IWMReaderAdvanced_GetReceiveSelectionCallbacks_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetReceiveStreamSamples_Proxy(
+    IWMReaderAdvanced* This,
+    WORD wStreamNum,
+    WINBOOL fReceiveStreamSamples);
+void __RPC_STUB IWMReaderAdvanced_SetReceiveStreamSamples_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetReceiveStreamSamples_Proxy(
+    IWMReaderAdvanced* This,
+    WORD wStreamNum,
+    WINBOOL *pfReceiveStreamSamples);
+void __RPC_STUB IWMReaderAdvanced_GetReceiveStreamSamples_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetAllocateForOutput_Proxy(
+    IWMReaderAdvanced* This,
+    DWORD dwOutputNum,
+    WINBOOL fAllocate);
+void __RPC_STUB IWMReaderAdvanced_SetAllocateForOutput_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetAllocateForOutput_Proxy(
+    IWMReaderAdvanced* This,
+    DWORD dwOutputNum,
+    WINBOOL *pfAllocate);
+void __RPC_STUB IWMReaderAdvanced_GetAllocateForOutput_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetAllocateForStream_Proxy(
+    IWMReaderAdvanced* This,
+    WORD wStreamNum,
+    WINBOOL fAllocate);
+void __RPC_STUB IWMReaderAdvanced_SetAllocateForStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetAllocateForStream_Proxy(
+    IWMReaderAdvanced* This,
+    WORD dwSreamNum,
+    WINBOOL *pfAllocate);
+void __RPC_STUB IWMReaderAdvanced_GetAllocateForStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetStatistics_Proxy(
+    IWMReaderAdvanced* This,
+    WM_READER_STATISTICS *pStatistics);
+void __RPC_STUB IWMReaderAdvanced_GetStatistics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetClientInfo_Proxy(
+    IWMReaderAdvanced* This,
+    WM_READER_CLIENTINFO *pClientInfo);
+void __RPC_STUB IWMReaderAdvanced_SetClientInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetMaxOutputSampleSize_Proxy(
+    IWMReaderAdvanced* This,
+    DWORD dwOutput,
+    DWORD *pcbMax);
+void __RPC_STUB IWMReaderAdvanced_GetMaxOutputSampleSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetMaxStreamSampleSize_Proxy(
+    IWMReaderAdvanced* This,
+    WORD wStream,
+    DWORD *pcbMax);
+void __RPC_STUB IWMReaderAdvanced_GetMaxStreamSampleSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_NotifyLateDelivery_Proxy(
+    IWMReaderAdvanced* This,
+    QWORD cnsLateness);
+void __RPC_STUB IWMReaderAdvanced_NotifyLateDelivery_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced2 interface
+ */
+#ifndef __IWMReaderAdvanced2_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ae14a945-b90c-4d0d-9127-80d665f7d73e")
+IWMReaderAdvanced2 : public IWMReaderAdvanced
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPlayMode(
+        WMT_PLAY_MODE Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPlayMode(
+        WMT_PLAY_MODE *pMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBufferProgress(
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDownloadProgress(
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSaveAsProgress(
+        DWORD *pdwPercent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveFileAs(
+        const WCHAR *pwszFilename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProtocolName(
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE StartAtMarker(
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOutputSetting(
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOutputSetting(
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Preroll(
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLogClientID(
+        WINBOOL fLogClientID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLogClientID(
+        WINBOOL *pfLogClientID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE StopBuffering(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OpenStream(
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e)
+#endif
+#else
+typedef struct IWMReaderAdvanced2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced2* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced2* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced2* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced2* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced2* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced2* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced2* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced2* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced2* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced2* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced2* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced2* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced2* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced2* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced2* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced2* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced2* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced2* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced2* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced2* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced2* This,
+        QWORD cnsLateness);
+
+    /*** IWMReaderAdvanced2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
+        IWMReaderAdvanced2* This,
+        WMT_PLAY_MODE Mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
+        IWMReaderAdvanced2* This,
+        WMT_PLAY_MODE *pMode);
+
+    HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
+        IWMReaderAdvanced2* This,
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering);
+
+    HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
+        IWMReaderAdvanced2* This,
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload);
+
+    HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
+        IWMReaderAdvanced2* This,
+        DWORD *pdwPercent);
+
+    HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
+        IWMReaderAdvanced2* This,
+        const WCHAR *pwszFilename);
+
+    HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
+        IWMReaderAdvanced2* This,
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
+        IWMReaderAdvanced2* This,
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
+        IWMReaderAdvanced2* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
+        IWMReaderAdvanced2* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength);
+
+    HRESULT (STDMETHODCALLTYPE *Preroll)(
+        IWMReaderAdvanced2* This,
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate);
+
+    HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
+        IWMReaderAdvanced2* This,
+        WINBOOL fLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
+        IWMReaderAdvanced2* This,
+        WINBOOL *pfLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
+        IWMReaderAdvanced2* This);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IWMReaderAdvanced2* This,
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext);
+
+    END_INTERFACE
+} IWMReaderAdvanced2Vtbl;
+interface IWMReaderAdvanced2 {
+    CONST_VTBL IWMReaderAdvanced2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced2_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced2_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced2_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced2_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced2_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced2_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced2_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced2_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced2_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced2_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced2_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced2_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced2_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced2_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced2_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced2_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced2_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced2_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced2_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced2_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced2_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+/*** IWMReaderAdvanced2 methods ***/
+#define IWMReaderAdvanced2_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
+#define IWMReaderAdvanced2_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
+#define IWMReaderAdvanced2_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
+#define IWMReaderAdvanced2_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
+#define IWMReaderAdvanced2_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
+#define IWMReaderAdvanced2_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
+#define IWMReaderAdvanced2_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
+#define IWMReaderAdvanced2_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
+#define IWMReaderAdvanced2_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
+#define IWMReaderAdvanced2_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
+#define IWMReaderAdvanced2_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
+#define IWMReaderAdvanced2_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
+#define IWMReaderAdvanced2_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
+#define IWMReaderAdvanced2_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
+#define IWMReaderAdvanced2_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced2_QueryInterface(IWMReaderAdvanced2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced2_AddRef(IWMReaderAdvanced2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced2_Release(IWMReaderAdvanced2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_DeliverTime(IWMReaderAdvanced2* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetStreamsSelected(IWMReaderAdvanced2* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStreamSelected(IWMReaderAdvanced2* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForStream(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForStream(IWMReaderAdvanced2* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStatistics(IWMReaderAdvanced2* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetClientInfo(IWMReaderAdvanced2* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxOutputSampleSize(IWMReaderAdvanced2* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxStreamSampleSize(IWMReaderAdvanced2* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_NotifyLateDelivery(IWMReaderAdvanced2* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+/*** IWMReaderAdvanced2 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE Mode) {
+    return This->lpVtbl->SetPlayMode(This,Mode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE *pMode) {
+    return This->lpVtbl->GetPlayMode(This,pMode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetBufferProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
+    return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetDownloadProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
+    return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetSaveAsProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent) {
+    return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SaveFileAs(IWMReaderAdvanced2* This,const WCHAR *pwszFilename) {
+    return This->lpVtbl->SaveFileAs(This,pwszFilename);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetProtocolName(IWMReaderAdvanced2* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
+    return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_StartAtMarker(IWMReaderAdvanced2* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
+    return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
+    return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_Preroll(IWMReaderAdvanced2* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
+    return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_SetLogClientID(IWMReaderAdvanced2* This,WINBOOL fLogClientID) {
+    return This->lpVtbl->SetLogClientID(This,fLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_GetLogClientID(IWMReaderAdvanced2* This,WINBOOL *pfLogClientID) {
+    return This->lpVtbl->GetLogClientID(This,pfLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_StopBuffering(IWMReaderAdvanced2* This) {
+    return This->lpVtbl->StopBuffering(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced2_OpenStream(IWMReaderAdvanced2* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
+    return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetPlayMode_Proxy(
+    IWMReaderAdvanced2* This,
+    WMT_PLAY_MODE Mode);
+void __RPC_STUB IWMReaderAdvanced2_SetPlayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetPlayMode_Proxy(
+    IWMReaderAdvanced2* This,
+    WMT_PLAY_MODE *pMode);
+void __RPC_STUB IWMReaderAdvanced2_GetPlayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetBufferProgress_Proxy(
+    IWMReaderAdvanced2* This,
+    DWORD *pdwPercent,
+    QWORD *pcnsBuffering);
+void __RPC_STUB IWMReaderAdvanced2_GetBufferProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetDownloadProgress_Proxy(
+    IWMReaderAdvanced2* This,
+    DWORD *pdwPercent,
+    QWORD *pqwBytesDownloaded,
+    QWORD *pcnsDownload);
+void __RPC_STUB IWMReaderAdvanced2_GetDownloadProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetSaveAsProgress_Proxy(
+    IWMReaderAdvanced2* This,
+    DWORD *pdwPercent);
+void __RPC_STUB IWMReaderAdvanced2_GetSaveAsProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SaveFileAs_Proxy(
+    IWMReaderAdvanced2* This,
+    const WCHAR *pwszFilename);
+void __RPC_STUB IWMReaderAdvanced2_SaveFileAs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetProtocolName_Proxy(
+    IWMReaderAdvanced2* This,
+    WCHAR *pwszProtocol,
+    DWORD *pcchProtocol);
+void __RPC_STUB IWMReaderAdvanced2_GetProtocolName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_StartAtMarker_Proxy(
+    IWMReaderAdvanced2* This,
+    WORD wMarkerIndex,
+    QWORD cnsDuration,
+    float fRate,
+    void *pvContext);
+void __RPC_STUB IWMReaderAdvanced2_StartAtMarker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetOutputSetting_Proxy(
+    IWMReaderAdvanced2* This,
+    DWORD dwOutputNum,
+    LPCWSTR pszName,
+    WMT_ATTR_DATATYPE *pType,
+    BYTE *pValue,
+    WORD *pcbLength);
+void __RPC_STUB IWMReaderAdvanced2_GetOutputSetting_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetOutputSetting_Proxy(
+    IWMReaderAdvanced2* This,
+    DWORD dwOutputNum,
+    LPCWSTR pszName,
+    WMT_ATTR_DATATYPE Type,
+    const BYTE *pValue,
+    WORD cbLength);
+void __RPC_STUB IWMReaderAdvanced2_SetOutputSetting_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_Preroll_Proxy(
+    IWMReaderAdvanced2* This,
+    QWORD cnsStart,
+    QWORD cnsDuration,
+    float fRate);
+void __RPC_STUB IWMReaderAdvanced2_Preroll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetLogClientID_Proxy(
+    IWMReaderAdvanced2* This,
+    WINBOOL fLogClientID);
+void __RPC_STUB IWMReaderAdvanced2_SetLogClientID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetLogClientID_Proxy(
+    IWMReaderAdvanced2* This,
+    WINBOOL *pfLogClientID);
+void __RPC_STUB IWMReaderAdvanced2_GetLogClientID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_StopBuffering_Proxy(
+    IWMReaderAdvanced2* This);
+void __RPC_STUB IWMReaderAdvanced2_StopBuffering_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_OpenStream_Proxy(
+    IWMReaderAdvanced2* This,
+    IStream *pStream,
+    IWMReaderCallback *pCallback,
+    void *pvContext);
+void __RPC_STUB IWMReaderAdvanced2_OpenStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced3 interface
+ */
+#ifndef __IWMReaderAdvanced3_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5dc0674b-f04b-4a4e-9f2a-b1afde2c8100")
+IWMReaderAdvanced3 : public IWMReaderAdvanced2
+{
+    virtual HRESULT STDMETHODCALLTYPE StopNetStreaming(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE StartAtPosition(
+        WORD wStreamNum,
+        void *pvOffsetStart,
+        void *pvDuration,
+        WMT_OFFSET_FORMAT dwOffsetFormat,
+        float fRate,
+        void *pvContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00)
+#endif
+#else
+typedef struct IWMReaderAdvanced3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced3* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced3* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced3* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced3* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced3* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced3* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced3* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced3* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced3* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced3* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced3* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced3* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced3* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced3* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced3* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced3* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced3* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced3* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced3* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced3* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced3* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced3* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced3* This,
+        QWORD cnsLateness);
+
+    /*** IWMReaderAdvanced2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
+        IWMReaderAdvanced3* This,
+        WMT_PLAY_MODE Mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
+        IWMReaderAdvanced3* This,
+        WMT_PLAY_MODE *pMode);
+
+    HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
+        IWMReaderAdvanced3* This,
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering);
+
+    HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
+        IWMReaderAdvanced3* This,
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload);
+
+    HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
+        IWMReaderAdvanced3* This,
+        DWORD *pdwPercent);
+
+    HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
+        IWMReaderAdvanced3* This,
+        const WCHAR *pwszFilename);
+
+    HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
+        IWMReaderAdvanced3* This,
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
+        IWMReaderAdvanced3* This,
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
+        IWMReaderAdvanced3* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
+        IWMReaderAdvanced3* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength);
+
+    HRESULT (STDMETHODCALLTYPE *Preroll)(
+        IWMReaderAdvanced3* This,
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate);
+
+    HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
+        IWMReaderAdvanced3* This,
+        WINBOOL fLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
+        IWMReaderAdvanced3* This,
+        WINBOOL *pfLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
+        IWMReaderAdvanced3* This);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IWMReaderAdvanced3* This,
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
+        IWMReaderAdvanced3* This);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
+        IWMReaderAdvanced3* This,
+        WORD wStreamNum,
+        void *pvOffsetStart,
+        void *pvDuration,
+        WMT_OFFSET_FORMAT dwOffsetFormat,
+        float fRate,
+        void *pvContext);
+
+    END_INTERFACE
+} IWMReaderAdvanced3Vtbl;
+interface IWMReaderAdvanced3 {
+    CONST_VTBL IWMReaderAdvanced3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced3_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced3_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced3_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced3_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced3_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced3_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced3_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced3_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced3_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced3_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced3_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced3_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced3_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced3_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced3_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced3_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced3_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced3_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced3_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced3_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced3_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+/*** IWMReaderAdvanced2 methods ***/
+#define IWMReaderAdvanced3_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
+#define IWMReaderAdvanced3_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
+#define IWMReaderAdvanced3_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
+#define IWMReaderAdvanced3_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
+#define IWMReaderAdvanced3_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
+#define IWMReaderAdvanced3_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
+#define IWMReaderAdvanced3_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
+#define IWMReaderAdvanced3_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
+#define IWMReaderAdvanced3_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
+#define IWMReaderAdvanced3_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
+#define IWMReaderAdvanced3_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
+#define IWMReaderAdvanced3_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
+#define IWMReaderAdvanced3_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
+#define IWMReaderAdvanced3_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
+#define IWMReaderAdvanced3_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
+/*** IWMReaderAdvanced3 methods ***/
+#define IWMReaderAdvanced3_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
+#define IWMReaderAdvanced3_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced3_QueryInterface(IWMReaderAdvanced3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced3_AddRef(IWMReaderAdvanced3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced3_Release(IWMReaderAdvanced3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_DeliverTime(IWMReaderAdvanced3* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetStreamsSelected(IWMReaderAdvanced3* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStreamSelected(IWMReaderAdvanced3* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForStream(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForStream(IWMReaderAdvanced3* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStatistics(IWMReaderAdvanced3* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetClientInfo(IWMReaderAdvanced3* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxOutputSampleSize(IWMReaderAdvanced3* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxStreamSampleSize(IWMReaderAdvanced3* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_NotifyLateDelivery(IWMReaderAdvanced3* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+/*** IWMReaderAdvanced2 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE Mode) {
+    return This->lpVtbl->SetPlayMode(This,Mode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE *pMode) {
+    return This->lpVtbl->GetPlayMode(This,pMode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetBufferProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
+    return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetDownloadProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
+    return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetSaveAsProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent) {
+    return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SaveFileAs(IWMReaderAdvanced3* This,const WCHAR *pwszFilename) {
+    return This->lpVtbl->SaveFileAs(This,pwszFilename);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetProtocolName(IWMReaderAdvanced3* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
+    return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtMarker(IWMReaderAdvanced3* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
+    return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
+    return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_Preroll(IWMReaderAdvanced3* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
+    return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_SetLogClientID(IWMReaderAdvanced3* This,WINBOOL fLogClientID) {
+    return This->lpVtbl->SetLogClientID(This,fLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_GetLogClientID(IWMReaderAdvanced3* This,WINBOOL *pfLogClientID) {
+    return This->lpVtbl->GetLogClientID(This,pfLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_StopBuffering(IWMReaderAdvanced3* This) {
+    return This->lpVtbl->StopBuffering(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_OpenStream(IWMReaderAdvanced3* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
+    return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
+}
+/*** IWMReaderAdvanced3 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced3_StopNetStreaming(IWMReaderAdvanced3* This) {
+    return This->lpVtbl->StopNetStreaming(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtPosition(IWMReaderAdvanced3* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced3_StopNetStreaming_Proxy(
+    IWMReaderAdvanced3* This);
+void __RPC_STUB IWMReaderAdvanced3_StopNetStreaming_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced3_StartAtPosition_Proxy(
+    IWMReaderAdvanced3* This,
+    WORD wStreamNum,
+    void *pvOffsetStart,
+    void *pvDuration,
+    WMT_OFFSET_FORMAT dwOffsetFormat,
+    float fRate,
+    void *pvContext);
+void __RPC_STUB IWMReaderAdvanced3_StartAtPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced4 interface
+ */
+#ifndef __IWMReaderAdvanced4_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced4_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("945a76a2-12ae-4d48-bd3c-cd1d90399b85")
+IWMReaderAdvanced4 : public IWMReaderAdvanced3
+{
+    virtual HRESULT STDMETHODCALLTYPE GetLanguageCount(
+        DWORD dwOutputNum,
+        WORD *pwLanguageCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLanguage(
+        DWORD dwOutputNum,
+        WORD wLanguage,
+        WCHAR *pwszLanguageString,
+        WORD *pcchLanguageStringLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaxSpeedFactor(
+        double *pdblFactor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsUsingFastCache(
+        WINBOOL *pfUsingFastCache) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddLogParam(
+        LPCWSTR wszNameSpace,
+        LPCWSTR wszName,
+        LPCWSTR wszValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendLogParams(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CanSaveFileAs(
+        WINBOOL *pfCanSave) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CancelSaveFileAs(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetURL(
+        WCHAR *pwszURL,
+        DWORD *pcchURL) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85)
+#endif
+#else
+typedef struct IWMReaderAdvanced4Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced4* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced4* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced4* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced4* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced4* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced4* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced4* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced4* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced4* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced4* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced4* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced4* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced4* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced4* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced4* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced4* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced4* This,
+        QWORD cnsLateness);
+
+    /*** IWMReaderAdvanced2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
+        IWMReaderAdvanced4* This,
+        WMT_PLAY_MODE Mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
+        IWMReaderAdvanced4* This,
+        WMT_PLAY_MODE *pMode);
+
+    HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
+        IWMReaderAdvanced4* This,
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering);
+
+    HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
+        IWMReaderAdvanced4* This,
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload);
+
+    HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
+        IWMReaderAdvanced4* This,
+        DWORD *pdwPercent);
+
+    HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
+        IWMReaderAdvanced4* This,
+        const WCHAR *pwszFilename);
+
+    HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
+        IWMReaderAdvanced4* This,
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
+        IWMReaderAdvanced4* This,
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength);
+
+    HRESULT (STDMETHODCALLTYPE *Preroll)(
+        IWMReaderAdvanced4* This,
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate);
+
+    HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
+        IWMReaderAdvanced4* This,
+        WINBOOL fLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
+        IWMReaderAdvanced4* This);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IWMReaderAdvanced4* This,
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
+        IWMReaderAdvanced4* This);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
+        IWMReaderAdvanced4* This,
+        WORD wStreamNum,
+        void *pvOffsetStart,
+        void *pvDuration,
+        WMT_OFFSET_FORMAT dwOffsetFormat,
+        float fRate,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        WORD *pwLanguageCount);
+
+    HRESULT (STDMETHODCALLTYPE *GetLanguage)(
+        IWMReaderAdvanced4* This,
+        DWORD dwOutputNum,
+        WORD wLanguage,
+        WCHAR *pwszLanguageString,
+        WORD *pcchLanguageStringLength);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
+        IWMReaderAdvanced4* This,
+        double *pdblFactor);
+
+    HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfUsingFastCache);
+
+    HRESULT (STDMETHODCALLTYPE *AddLogParam)(
+        IWMReaderAdvanced4* This,
+        LPCWSTR wszNameSpace,
+        LPCWSTR wszName,
+        LPCWSTR wszValue);
+
+    HRESULT (STDMETHODCALLTYPE *SendLogParams)(
+        IWMReaderAdvanced4* This);
+
+    HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
+        IWMReaderAdvanced4* This,
+        WINBOOL *pfCanSave);
+
+    HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
+        IWMReaderAdvanced4* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetURL)(
+        IWMReaderAdvanced4* This,
+        WCHAR *pwszURL,
+        DWORD *pcchURL);
+
+    END_INTERFACE
+} IWMReaderAdvanced4Vtbl;
+interface IWMReaderAdvanced4 {
+    CONST_VTBL IWMReaderAdvanced4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced4_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced4_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced4_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced4_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced4_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced4_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced4_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced4_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced4_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced4_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced4_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced4_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced4_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced4_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced4_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced4_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced4_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced4_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced4_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced4_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced4_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+/*** IWMReaderAdvanced2 methods ***/
+#define IWMReaderAdvanced4_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
+#define IWMReaderAdvanced4_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
+#define IWMReaderAdvanced4_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
+#define IWMReaderAdvanced4_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
+#define IWMReaderAdvanced4_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
+#define IWMReaderAdvanced4_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
+#define IWMReaderAdvanced4_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
+#define IWMReaderAdvanced4_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
+#define IWMReaderAdvanced4_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
+#define IWMReaderAdvanced4_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
+#define IWMReaderAdvanced4_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
+#define IWMReaderAdvanced4_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
+#define IWMReaderAdvanced4_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
+#define IWMReaderAdvanced4_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
+#define IWMReaderAdvanced4_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
+/*** IWMReaderAdvanced3 methods ***/
+#define IWMReaderAdvanced4_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
+#define IWMReaderAdvanced4_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
+/*** IWMReaderAdvanced4 methods ***/
+#define IWMReaderAdvanced4_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
+#define IWMReaderAdvanced4_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
+#define IWMReaderAdvanced4_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
+#define IWMReaderAdvanced4_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
+#define IWMReaderAdvanced4_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
+#define IWMReaderAdvanced4_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
+#define IWMReaderAdvanced4_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
+#define IWMReaderAdvanced4_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
+#define IWMReaderAdvanced4_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced4_QueryInterface(IWMReaderAdvanced4* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced4_AddRef(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced4_Release(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_DeliverTime(IWMReaderAdvanced4* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetStreamsSelected(IWMReaderAdvanced4* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStreamSelected(IWMReaderAdvanced4* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForStream(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForStream(IWMReaderAdvanced4* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStatistics(IWMReaderAdvanced4* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetClientInfo(IWMReaderAdvanced4* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxOutputSampleSize(IWMReaderAdvanced4* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxStreamSampleSize(IWMReaderAdvanced4* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_NotifyLateDelivery(IWMReaderAdvanced4* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+/*** IWMReaderAdvanced2 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE Mode) {
+    return This->lpVtbl->SetPlayMode(This,Mode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE *pMode) {
+    return This->lpVtbl->GetPlayMode(This,pMode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetBufferProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
+    return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetDownloadProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
+    return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetSaveAsProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent) {
+    return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SaveFileAs(IWMReaderAdvanced4* This,const WCHAR *pwszFilename) {
+    return This->lpVtbl->SaveFileAs(This,pwszFilename);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetProtocolName(IWMReaderAdvanced4* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
+    return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtMarker(IWMReaderAdvanced4* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
+    return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
+    return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_Preroll(IWMReaderAdvanced4* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
+    return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SetLogClientID(IWMReaderAdvanced4* This,WINBOOL fLogClientID) {
+    return This->lpVtbl->SetLogClientID(This,fLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLogClientID(IWMReaderAdvanced4* This,WINBOOL *pfLogClientID) {
+    return This->lpVtbl->GetLogClientID(This,pfLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_StopBuffering(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->StopBuffering(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_OpenStream(IWMReaderAdvanced4* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
+    return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
+}
+/*** IWMReaderAdvanced3 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced4_StopNetStreaming(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->StopNetStreaming(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtPosition(IWMReaderAdvanced4* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
+}
+/*** IWMReaderAdvanced4 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguageCount(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
+    return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguage(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
+    return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxSpeedFactor(IWMReaderAdvanced4* This,double *pdblFactor) {
+    return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_IsUsingFastCache(IWMReaderAdvanced4* This,WINBOOL *pfUsingFastCache) {
+    return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_AddLogParam(IWMReaderAdvanced4* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
+    return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_SendLogParams(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->SendLogParams(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_CanSaveFileAs(IWMReaderAdvanced4* This,WINBOOL *pfCanSave) {
+    return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_CancelSaveFileAs(IWMReaderAdvanced4* This) {
+    return This->lpVtbl->CancelSaveFileAs(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced4_GetURL(IWMReaderAdvanced4* This,WCHAR *pwszURL,DWORD *pcchURL) {
+    return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetLanguageCount_Proxy(
+    IWMReaderAdvanced4* This,
+    DWORD dwOutputNum,
+    WORD *pwLanguageCount);
+void __RPC_STUB IWMReaderAdvanced4_GetLanguageCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetLanguage_Proxy(
+    IWMReaderAdvanced4* This,
+    DWORD dwOutputNum,
+    WORD wLanguage,
+    WCHAR *pwszLanguageString,
+    WORD *pcchLanguageStringLength);
+void __RPC_STUB IWMReaderAdvanced4_GetLanguage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetMaxSpeedFactor_Proxy(
+    IWMReaderAdvanced4* This,
+    double *pdblFactor);
+void __RPC_STUB IWMReaderAdvanced4_GetMaxSpeedFactor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_IsUsingFastCache_Proxy(
+    IWMReaderAdvanced4* This,
+    WINBOOL *pfUsingFastCache);
+void __RPC_STUB IWMReaderAdvanced4_IsUsingFastCache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_AddLogParam_Proxy(
+    IWMReaderAdvanced4* This,
+    LPCWSTR wszNameSpace,
+    LPCWSTR wszName,
+    LPCWSTR wszValue);
+void __RPC_STUB IWMReaderAdvanced4_AddLogParam_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_SendLogParams_Proxy(
+    IWMReaderAdvanced4* This);
+void __RPC_STUB IWMReaderAdvanced4_SendLogParams_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_CanSaveFileAs_Proxy(
+    IWMReaderAdvanced4* This,
+    WINBOOL *pfCanSave);
+void __RPC_STUB IWMReaderAdvanced4_CanSaveFileAs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_CancelSaveFileAs_Proxy(
+    IWMReaderAdvanced4* This);
+void __RPC_STUB IWMReaderAdvanced4_CancelSaveFileAs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetURL_Proxy(
+    IWMReaderAdvanced4* This,
+    WCHAR *pwszURL,
+    DWORD *pcchURL);
+void __RPC_STUB IWMReaderAdvanced4_GetURL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced4_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced5 interface
+ */
+#ifndef __IWMReaderAdvanced5_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced5_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("24c44db0-55d1-49ae-a5cc-f13815e36363")
+IWMReaderAdvanced5 : public IWMReaderAdvanced4
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPlayerHook(
+        DWORD dwOutputNum,
+        IWMPlayerHook *pHook) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63)
+#endif
+#else
+typedef struct IWMReaderAdvanced5Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced5* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced5* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced5* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced5* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced5* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced5* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced5* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced5* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced5* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced5* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced5* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced5* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced5* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced5* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced5* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced5* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced5* This,
+        QWORD cnsLateness);
+
+    /*** IWMReaderAdvanced2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
+        IWMReaderAdvanced5* This,
+        WMT_PLAY_MODE Mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
+        IWMReaderAdvanced5* This,
+        WMT_PLAY_MODE *pMode);
+
+    HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
+        IWMReaderAdvanced5* This,
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering);
+
+    HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
+        IWMReaderAdvanced5* This,
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload);
+
+    HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
+        IWMReaderAdvanced5* This,
+        DWORD *pdwPercent);
+
+    HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
+        IWMReaderAdvanced5* This,
+        const WCHAR *pwszFilename);
+
+    HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
+        IWMReaderAdvanced5* This,
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
+        IWMReaderAdvanced5* This,
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength);
+
+    HRESULT (STDMETHODCALLTYPE *Preroll)(
+        IWMReaderAdvanced5* This,
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate);
+
+    HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
+        IWMReaderAdvanced5* This,
+        WINBOOL fLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
+        IWMReaderAdvanced5* This);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IWMReaderAdvanced5* This,
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
+        IWMReaderAdvanced5* This);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
+        IWMReaderAdvanced5* This,
+        WORD wStreamNum,
+        void *pvOffsetStart,
+        void *pvDuration,
+        WMT_OFFSET_FORMAT dwOffsetFormat,
+        float fRate,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        WORD *pwLanguageCount);
+
+    HRESULT (STDMETHODCALLTYPE *GetLanguage)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        WORD wLanguage,
+        WCHAR *pwszLanguageString,
+        WORD *pcchLanguageStringLength);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
+        IWMReaderAdvanced5* This,
+        double *pdblFactor);
+
+    HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfUsingFastCache);
+
+    HRESULT (STDMETHODCALLTYPE *AddLogParam)(
+        IWMReaderAdvanced5* This,
+        LPCWSTR wszNameSpace,
+        LPCWSTR wszName,
+        LPCWSTR wszValue);
+
+    HRESULT (STDMETHODCALLTYPE *SendLogParams)(
+        IWMReaderAdvanced5* This);
+
+    HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
+        IWMReaderAdvanced5* This,
+        WINBOOL *pfCanSave);
+
+    HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
+        IWMReaderAdvanced5* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetURL)(
+        IWMReaderAdvanced5* This,
+        WCHAR *pwszURL,
+        DWORD *pcchURL);
+
+    /*** IWMReaderAdvanced5 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
+        IWMReaderAdvanced5* This,
+        DWORD dwOutputNum,
+        IWMPlayerHook *pHook);
+
+    END_INTERFACE
+} IWMReaderAdvanced5Vtbl;
+interface IWMReaderAdvanced5 {
+    CONST_VTBL IWMReaderAdvanced5Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced5_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced5_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced5_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced5_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced5_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced5_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced5_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced5_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced5_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced5_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced5_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced5_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced5_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced5_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced5_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced5_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced5_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced5_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced5_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced5_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced5_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced5_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+/*** IWMReaderAdvanced2 methods ***/
+#define IWMReaderAdvanced5_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
+#define IWMReaderAdvanced5_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
+#define IWMReaderAdvanced5_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
+#define IWMReaderAdvanced5_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
+#define IWMReaderAdvanced5_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
+#define IWMReaderAdvanced5_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
+#define IWMReaderAdvanced5_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
+#define IWMReaderAdvanced5_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
+#define IWMReaderAdvanced5_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
+#define IWMReaderAdvanced5_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
+#define IWMReaderAdvanced5_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
+#define IWMReaderAdvanced5_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
+#define IWMReaderAdvanced5_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
+#define IWMReaderAdvanced5_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
+#define IWMReaderAdvanced5_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
+/*** IWMReaderAdvanced3 methods ***/
+#define IWMReaderAdvanced5_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
+#define IWMReaderAdvanced5_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
+/*** IWMReaderAdvanced4 methods ***/
+#define IWMReaderAdvanced5_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
+#define IWMReaderAdvanced5_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
+#define IWMReaderAdvanced5_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
+#define IWMReaderAdvanced5_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
+#define IWMReaderAdvanced5_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
+#define IWMReaderAdvanced5_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
+#define IWMReaderAdvanced5_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
+#define IWMReaderAdvanced5_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
+#define IWMReaderAdvanced5_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
+/*** IWMReaderAdvanced5 methods ***/
+#define IWMReaderAdvanced5_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_QueryInterface(IWMReaderAdvanced5* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced5_AddRef(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced5_Release(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_DeliverTime(IWMReaderAdvanced5* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetStreamsSelected(IWMReaderAdvanced5* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStreamSelected(IWMReaderAdvanced5* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForStream(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForStream(IWMReaderAdvanced5* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStatistics(IWMReaderAdvanced5* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetClientInfo(IWMReaderAdvanced5* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxOutputSampleSize(IWMReaderAdvanced5* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxStreamSampleSize(IWMReaderAdvanced5* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_NotifyLateDelivery(IWMReaderAdvanced5* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+/*** IWMReaderAdvanced2 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE Mode) {
+    return This->lpVtbl->SetPlayMode(This,Mode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE *pMode) {
+    return This->lpVtbl->GetPlayMode(This,pMode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetBufferProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
+    return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetDownloadProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
+    return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetSaveAsProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent) {
+    return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SaveFileAs(IWMReaderAdvanced5* This,const WCHAR *pwszFilename) {
+    return This->lpVtbl->SaveFileAs(This,pwszFilename);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetProtocolName(IWMReaderAdvanced5* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
+    return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtMarker(IWMReaderAdvanced5* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
+    return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
+    return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_Preroll(IWMReaderAdvanced5* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
+    return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetLogClientID(IWMReaderAdvanced5* This,WINBOOL fLogClientID) {
+    return This->lpVtbl->SetLogClientID(This,fLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLogClientID(IWMReaderAdvanced5* This,WINBOOL *pfLogClientID) {
+    return This->lpVtbl->GetLogClientID(This,pfLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_StopBuffering(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->StopBuffering(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_OpenStream(IWMReaderAdvanced5* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
+    return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
+}
+/*** IWMReaderAdvanced3 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_StopNetStreaming(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->StopNetStreaming(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtPosition(IWMReaderAdvanced5* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
+}
+/*** IWMReaderAdvanced4 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguageCount(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
+    return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguage(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
+    return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxSpeedFactor(IWMReaderAdvanced5* This,double *pdblFactor) {
+    return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_IsUsingFastCache(IWMReaderAdvanced5* This,WINBOOL *pfUsingFastCache) {
+    return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_AddLogParam(IWMReaderAdvanced5* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
+    return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SendLogParams(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->SendLogParams(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_CanSaveFileAs(IWMReaderAdvanced5* This,WINBOOL *pfCanSave) {
+    return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_CancelSaveFileAs(IWMReaderAdvanced5* This) {
+    return This->lpVtbl->CancelSaveFileAs(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced5_GetURL(IWMReaderAdvanced5* This,WCHAR *pwszURL,DWORD *pcchURL) {
+    return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
+}
+/*** IWMReaderAdvanced5 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayerHook(IWMReaderAdvanced5* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
+    return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced5_SetPlayerHook_Proxy(
+    IWMReaderAdvanced5* This,
+    DWORD dwOutputNum,
+    IWMPlayerHook *pHook);
+void __RPC_STUB IWMReaderAdvanced5_SetPlayerHook_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced5_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMReaderAdvanced6 interface
+ */
+#ifndef __IWMReaderAdvanced6_INTERFACE_DEFINED__
+#define __IWMReaderAdvanced6_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("18a2e7f8-428f-4acd-8a00-e64639bc93de")
+IWMReaderAdvanced6 : public IWMReaderAdvanced5
+{
+    virtual HRESULT STDMETHODCALLTYPE SetProtectStreamSamples(
+        BYTE *pbCertificate,
+        DWORD cbCertificate,
+        DWORD dwCertificateType,
+        DWORD dwFlags,
+        BYTE *pbInitializationVector,
+        DWORD *pcbInitializationVector) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde)
+#endif
+#else
+typedef struct IWMReaderAdvanced6Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMReaderAdvanced6* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMReaderAdvanced6* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMReaderAdvanced6* This);
+
+    /*** IWMReaderAdvanced methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
+        IWMReaderAdvanced6* This,
+        WINBOOL fUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfUserClock);
+
+    HRESULT (STDMETHODCALLTYPE *DeliverTime)(
+        IWMReaderAdvanced6* This,
+        QWORD cnsTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
+        IWMReaderAdvanced6* This,
+        WINBOOL fSelection);
+
+    HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
+        IWMReaderAdvanced6* This,
+        WORD cStreamCount,
+        WORD *pwStreamNumbers,
+        WMT_STREAM_SELECTION *pSelections);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
+        IWMReaderAdvanced6* This,
+        WORD wStreamNum,
+        WMT_STREAM_SELECTION *pSelection);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced6* This,
+        WINBOOL fGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfGetCallbacks);
+
+    HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
+        IWMReaderAdvanced6* This,
+        WORD wStreamNum,
+        WINBOOL fReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
+        IWMReaderAdvanced6* This,
+        WORD wStreamNum,
+        WINBOOL *pfReceiveStreamSamples);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
+        IWMReaderAdvanced6* This,
+        WORD wStreamNum,
+        WINBOOL fAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
+        IWMReaderAdvanced6* This,
+        WORD dwSreamNum,
+        WINBOOL *pfAllocate);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
+        IWMReaderAdvanced6* This,
+        WM_READER_STATISTICS *pStatistics);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
+        IWMReaderAdvanced6* This,
+        WM_READER_CLIENTINFO *pClientInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutput,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
+        IWMReaderAdvanced6* This,
+        WORD wStream,
+        DWORD *pcbMax);
+
+    HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
+        IWMReaderAdvanced6* This,
+        QWORD cnsLateness);
+
+    /*** IWMReaderAdvanced2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
+        IWMReaderAdvanced6* This,
+        WMT_PLAY_MODE Mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
+        IWMReaderAdvanced6* This,
+        WMT_PLAY_MODE *pMode);
+
+    HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
+        IWMReaderAdvanced6* This,
+        DWORD *pdwPercent,
+        QWORD *pcnsBuffering);
+
+    HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
+        IWMReaderAdvanced6* This,
+        DWORD *pdwPercent,
+        QWORD *pqwBytesDownloaded,
+        QWORD *pcnsDownload);
+
+    HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
+        IWMReaderAdvanced6* This,
+        DWORD *pdwPercent);
+
+    HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
+        IWMReaderAdvanced6* This,
+        const WCHAR *pwszFilename);
+
+    HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
+        IWMReaderAdvanced6* This,
+        WCHAR *pwszProtocol,
+        DWORD *pcchProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
+        IWMReaderAdvanced6* This,
+        WORD wMarkerIndex,
+        QWORD cnsDuration,
+        float fRate,
+        void *pvContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE *pType,
+        BYTE *pValue,
+        WORD *pcbLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        LPCWSTR pszName,
+        WMT_ATTR_DATATYPE Type,
+        const BYTE *pValue,
+        WORD cbLength);
+
+    HRESULT (STDMETHODCALLTYPE *Preroll)(
+        IWMReaderAdvanced6* This,
+        QWORD cnsStart,
+        QWORD cnsDuration,
+        float fRate);
+
+    HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
+        IWMReaderAdvanced6* This,
+        WINBOOL fLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfLogClientID);
+
+    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
+        IWMReaderAdvanced6* This);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IWMReaderAdvanced6* This,
+        IStream *pStream,
+        IWMReaderCallback *pCallback,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
+        IWMReaderAdvanced6* This);
+
+    HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
+        IWMReaderAdvanced6* This,
+        WORD wStreamNum,
+        void *pvOffsetStart,
+        void *pvDuration,
+        WMT_OFFSET_FORMAT dwOffsetFormat,
+        float fRate,
+        void *pvContext);
+
+    /*** IWMReaderAdvanced4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        WORD *pwLanguageCount);
+
+    HRESULT (STDMETHODCALLTYPE *GetLanguage)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        WORD wLanguage,
+        WCHAR *pwszLanguageString,
+        WORD *pcchLanguageStringLength);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
+        IWMReaderAdvanced6* This,
+        double *pdblFactor);
+
+    HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfUsingFastCache);
+
+    HRESULT (STDMETHODCALLTYPE *AddLogParam)(
+        IWMReaderAdvanced6* This,
+        LPCWSTR wszNameSpace,
+        LPCWSTR wszName,
+        LPCWSTR wszValue);
+
+    HRESULT (STDMETHODCALLTYPE *SendLogParams)(
+        IWMReaderAdvanced6* This);
+
+    HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
+        IWMReaderAdvanced6* This,
+        WINBOOL *pfCanSave);
+
+    HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
+        IWMReaderAdvanced6* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetURL)(
+        IWMReaderAdvanced6* This,
+        WCHAR *pwszURL,
+        DWORD *pcchURL);
+
+    /*** IWMReaderAdvanced5 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
+        IWMReaderAdvanced6* This,
+        DWORD dwOutputNum,
+        IWMPlayerHook *pHook);
+
+    /*** IWMReaderAdvanced6 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetProtectStreamSamples)(
+        IWMReaderAdvanced6* This,
+        BYTE *pbCertificate,
+        DWORD cbCertificate,
+        DWORD dwCertificateType,
+        DWORD dwFlags,
+        BYTE *pbInitializationVector,
+        DWORD *pcbInitializationVector);
+
+    END_INTERFACE
+} IWMReaderAdvanced6Vtbl;
+interface IWMReaderAdvanced6 {
+    CONST_VTBL IWMReaderAdvanced6Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderAdvanced6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderAdvanced6_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderAdvanced6_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderAdvanced methods ***/
+#define IWMReaderAdvanced6_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
+#define IWMReaderAdvanced6_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
+#define IWMReaderAdvanced6_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
+#define IWMReaderAdvanced6_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
+#define IWMReaderAdvanced6_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
+#define IWMReaderAdvanced6_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
+#define IWMReaderAdvanced6_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
+#define IWMReaderAdvanced6_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
+#define IWMReaderAdvanced6_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
+#define IWMReaderAdvanced6_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
+#define IWMReaderAdvanced6_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
+#define IWMReaderAdvanced6_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
+#define IWMReaderAdvanced6_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
+#define IWMReaderAdvanced6_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
+#define IWMReaderAdvanced6_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
+#define IWMReaderAdvanced6_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
+#define IWMReaderAdvanced6_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
+#define IWMReaderAdvanced6_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
+#define IWMReaderAdvanced6_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
+#define IWMReaderAdvanced6_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
+/*** IWMReaderAdvanced2 methods ***/
+#define IWMReaderAdvanced6_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
+#define IWMReaderAdvanced6_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
+#define IWMReaderAdvanced6_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
+#define IWMReaderAdvanced6_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
+#define IWMReaderAdvanced6_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
+#define IWMReaderAdvanced6_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
+#define IWMReaderAdvanced6_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
+#define IWMReaderAdvanced6_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
+#define IWMReaderAdvanced6_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
+#define IWMReaderAdvanced6_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
+#define IWMReaderAdvanced6_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
+#define IWMReaderAdvanced6_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
+#define IWMReaderAdvanced6_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
+#define IWMReaderAdvanced6_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
+#define IWMReaderAdvanced6_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
+/*** IWMReaderAdvanced3 methods ***/
+#define IWMReaderAdvanced6_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
+#define IWMReaderAdvanced6_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
+/*** IWMReaderAdvanced4 methods ***/
+#define IWMReaderAdvanced6_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
+#define IWMReaderAdvanced6_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
+#define IWMReaderAdvanced6_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
+#define IWMReaderAdvanced6_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
+#define IWMReaderAdvanced6_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
+#define IWMReaderAdvanced6_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
+#define IWMReaderAdvanced6_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
+#define IWMReaderAdvanced6_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
+#define IWMReaderAdvanced6_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
+/*** IWMReaderAdvanced5 methods ***/
+#define IWMReaderAdvanced6_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
+/*** IWMReaderAdvanced6 methods ***/
+#define IWMReaderAdvanced6_SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector) (This)->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_QueryInterface(IWMReaderAdvanced6* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced6_AddRef(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderAdvanced6_Release(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMReaderAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL fUserClock) {
+    return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL *pfUserClock) {
+    return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_DeliverTime(IWMReaderAdvanced6* This,QWORD cnsTime) {
+    return This->lpVtbl->DeliverTime(This,cnsTime);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL fSelection) {
+    return This->lpVtbl->SetManualStreamSelection(This,fSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL *pfSelection) {
+    return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetStreamsSelected(IWMReaderAdvanced6* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
+    return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStreamSelected(IWMReaderAdvanced6* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
+    return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL fGetCallbacks) {
+    return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL *pfGetCallbacks) {
+    return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
+    return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
+    return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForStream(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fAllocate) {
+    return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForStream(IWMReaderAdvanced6* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
+    return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStatistics(IWMReaderAdvanced6* This,WM_READER_STATISTICS *pStatistics) {
+    return This->lpVtbl->GetStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetClientInfo(IWMReaderAdvanced6* This,WM_READER_CLIENTINFO *pClientInfo) {
+    return This->lpVtbl->SetClientInfo(This,pClientInfo);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxOutputSampleSize(IWMReaderAdvanced6* This,DWORD dwOutput,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxStreamSampleSize(IWMReaderAdvanced6* This,WORD wStream,DWORD *pcbMax) {
+    return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_NotifyLateDelivery(IWMReaderAdvanced6* This,QWORD cnsLateness) {
+    return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
+}
+/*** IWMReaderAdvanced2 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE Mode) {
+    return This->lpVtbl->SetPlayMode(This,Mode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE *pMode) {
+    return This->lpVtbl->GetPlayMode(This,pMode);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetBufferProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
+    return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetDownloadProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
+    return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetSaveAsProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent) {
+    return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SaveFileAs(IWMReaderAdvanced6* This,const WCHAR *pwszFilename) {
+    return This->lpVtbl->SaveFileAs(This,pwszFilename);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetProtocolName(IWMReaderAdvanced6* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
+    return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtMarker(IWMReaderAdvanced6* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
+    return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
+    return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_Preroll(IWMReaderAdvanced6* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
+    return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetLogClientID(IWMReaderAdvanced6* This,WINBOOL fLogClientID) {
+    return This->lpVtbl->SetLogClientID(This,fLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLogClientID(IWMReaderAdvanced6* This,WINBOOL *pfLogClientID) {
+    return This->lpVtbl->GetLogClientID(This,pfLogClientID);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_StopBuffering(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->StopBuffering(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_OpenStream(IWMReaderAdvanced6* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
+    return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
+}
+/*** IWMReaderAdvanced3 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_StopNetStreaming(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->StopNetStreaming(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtPosition(IWMReaderAdvanced6* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
+    return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
+}
+/*** IWMReaderAdvanced4 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguageCount(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
+    return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguage(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
+    return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxSpeedFactor(IWMReaderAdvanced6* This,double *pdblFactor) {
+    return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_IsUsingFastCache(IWMReaderAdvanced6* This,WINBOOL *pfUsingFastCache) {
+    return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_AddLogParam(IWMReaderAdvanced6* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
+    return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SendLogParams(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->SendLogParams(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_CanSaveFileAs(IWMReaderAdvanced6* This,WINBOOL *pfCanSave) {
+    return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_CancelSaveFileAs(IWMReaderAdvanced6* This) {
+    return This->lpVtbl->CancelSaveFileAs(This);
+}
+static FORCEINLINE HRESULT IWMReaderAdvanced6_GetURL(IWMReaderAdvanced6* This,WCHAR *pwszURL,DWORD *pcchURL) {
+    return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
+}
+/*** IWMReaderAdvanced5 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayerHook(IWMReaderAdvanced6* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
+    return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
+}
+/*** IWMReaderAdvanced6 methods ***/
+static FORCEINLINE HRESULT IWMReaderAdvanced6_SetProtectStreamSamples(IWMReaderAdvanced6* This,BYTE *pbCertificate,DWORD cbCertificate,DWORD dwCertificateType,DWORD dwFlags,BYTE *pbInitializationVector,DWORD *pcbInitializationVector) {
+    return This->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWMReaderAdvanced6_SetProtectStreamSamples_Proxy(
+    IWMReaderAdvanced6* This,
+    BYTE *pbCertificate,
+    DWORD cbCertificate,
+    DWORD dwCertificateType,
+    DWORD dwFlags,
+    BYTE *pbInitializationVector,
+    DWORD *pcbInitializationVector);
+void __RPC_STUB IWMReaderAdvanced6_SetProtectStreamSamples_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWMReaderAdvanced6_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
  * IWMSyncReader interface
  */
 #ifndef __IWMSyncReader_INTERFACE_DEFINED__
@@ -4206,6 +7468,7 @@
 #endif  /* __IWMWriterAdvanced3_INTERFACE_DEFINED__ */
 
 HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);
+HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);
 EXTERN_GUID(WMMEDIASUBTYPE_Base,   0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
 EXTERN_GUID(WMMEDIATYPE_Video,     0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
 EXTERN_GUID(WMMEDIASUBTYPE_RGB1,   0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
diff --git a/x86_64-w64-mingw32/include/wrl.h b/x86_64-w64-mingw32/include/wrl.h
new file mode 100644
index 0000000..be147fe
--- /dev/null
+++ b/x86_64-w64-mingw32/include/wrl.h
@@ -0,0 +1,15 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WRL_H_
+#define _WRL_H_
+
+#include <wrl/client.h>
+/* #include <wrl/implements.h> */
+#include <wrl/module.h>
+/* #include <wrl/event.h> */
+
+#endif
diff --git a/x86_64-w64-mingw32/include/wrl/client.h b/x86_64-w64-mingw32/include/wrl/client.h
new file mode 100644
index 0000000..83b4cb3
--- /dev/null
+++ b/x86_64-w64-mingw32/include/wrl/client.h
@@ -0,0 +1,308 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WRL_CLIENT_H_
+#define _WRL_CLIENT_H_
+
+#include <stddef.h>
+#include <unknwn.h>
+/* #include <weakreference.h> */
+#include <roapi.h>
+
+/* #include <wrl/def.h> */
+#include <wrl/internal.h>
+
+namespace Microsoft {
+    namespace WRL {
+        namespace Details {
+            template <typename T> class ComPtrRefBase {
+            protected:
+                T* ptr_;
+
+            public:
+                typedef typename T::InterfaceType InterfaceType;
+
+#ifndef __WRL_CLASSIC_COM__
+                operator IInspectable**() const throw()  {
+                    static_assert(__is_base_of(IInspectable, InterfaceType), "Invalid cast");
+                    return reinterpret_cast<IInspectable**>(ptr_->ReleaseAndGetAddressOf());
+                }
+#endif
+
+                operator IUnknown**() const throw() {
+                    static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast");
+                    return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
+                }
+            };
+
+            template <typename T> class ComPtrRef : public Details::ComPtrRefBase<T> {
+            public:
+                ComPtrRef(T *ptr) throw() {
+                    ComPtrRefBase<T>::ptr_ = ptr;
+                }
+
+                operator void**() const throw() {
+                    return reinterpret_cast<void**>(ComPtrRefBase<T>::ptr_->ReleaseAndGetAddressOf());
+                }
+
+                operator T*() throw() {
+                    *ComPtrRefBase<T>::ptr_ = nullptr;
+                    return ComPtrRefBase<T>::ptr_;
+                }
+
+                operator typename ComPtrRefBase<T>::InterfaceType**() throw() {
+                    return ComPtrRefBase<T>::ptr_->ReleaseAndGetAddressOf();
+                }
+
+                typename ComPtrRefBase<T>::InterfaceType *operator*() throw() {
+                    return ComPtrRefBase<T>::ptr_->Get();
+                }
+
+                typename ComPtrRefBase<T>::InterfaceType *const *GetAddressOf() const throw() {
+                    return ComPtrRefBase<T>::ptr_->GetAddressOf();
+                }
+
+                typename ComPtrRefBase<T>::InterfaceType **ReleaseAndGetAddressOf() throw() {
+                    return ComPtrRefBase<T>::ptr_->ReleaseAndGetAddressOf();
+                }
+            };
+
+        }
+
+        template<typename T> class ComPtr {
+        public:
+            typedef T InterfaceType;
+
+            ComPtr() throw() : ptr_(nullptr) {}
+            ComPtr(decltype(nullptr)) throw() : ptr_(nullptr) {}
+
+            template<class U> ComPtr(U *other) throw() : ptr_(other) {
+                InternalAddRef();
+            }
+
+            ComPtr(const ComPtr &other) throw() : ptr_(other.ptr_) {
+                InternalAddRef();
+            }
+
+            template<class U>
+            ComPtr(const ComPtr<U> &other) throw() : ptr_(other.ptr_) {
+                InternalAddRef();
+            }
+
+            ComPtr(ComPtr &&other) throw() : ptr_(nullptr) {
+                if(this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
+                    Swap(other);
+            }
+
+            template<class U>
+            ComPtr(ComPtr<U>&& other) throw() : ptr_(other.ptr_) {
+                other.ptr_ = nullptr;
+            }
+
+            ~ComPtr() throw() {
+                InternalRelease();
+            }
+
+            ComPtr &operator=(decltype(nullptr)) throw() {
+                InternalRelease();
+                return *this;
+            }
+
+            ComPtr &operator=(InterfaceType *other) throw() {
+                if (ptr_ != other) {
+                    InternalRelease();
+                    ptr_ = other;
+                    InternalAddRef();
+                }
+                return *this;
+            }
+
+            template<typename U>
+            ComPtr &operator=(U *other) throw()  {
+                if (ptr_ != other) {
+                    InternalRelease();
+                    ptr_ = other;
+                    InternalAddRef();
+                }
+                return *this;
+            }
+
+            ComPtr& operator=(const ComPtr &other) throw() {
+                if (ptr_ != other.ptr_)
+                    ComPtr(other).Swap(*this);
+                return *this;
+            }
+
+            template<class U>
+            ComPtr &operator=(const ComPtr<U> &other) throw() {
+                ComPtr(other).Swap(*this);
+                return *this;
+            }
+
+            ComPtr& operator=(ComPtr &&other) throw() {
+                ComPtr(other).Swap(*this);
+                return *this;
+            }
+
+            template<class U>
+            ComPtr& operator=(ComPtr<U> &&other) throw() {
+                ComPtr(other).Swap(*this);
+                return *this;
+            }
+
+            void Swap(ComPtr &&r) throw() {
+                InterfaceType *tmp = ptr_;
+                ptr_ = r.ptr_;
+                r.ptr_ = tmp;
+            }
+
+            void Swap(ComPtr &r) throw() {
+                InterfaceType *tmp = ptr_;
+                ptr_ = r.ptr_;
+                r.ptr_ = tmp;
+            }
+
+            operator Details::BoolType() const throw() {
+                return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
+            }
+
+            InterfaceType *Get() const throw()  {
+                return ptr_;
+            }
+
+            InterfaceType *operator->() const throw() {
+                return ptr_;
+            }
+
+            Details::ComPtrRef<ComPtr<T>> operator&() throw()  {
+                return Details::ComPtrRef<ComPtr<T>>(this);
+            }
+
+            const Details::ComPtrRef<const ComPtr<T>> operator&() const throw() {
+                return Details::ComPtrRef<const ComPtr<T>>(this);
+            }
+
+            InterfaceType *const *GetAddressOf() const throw() {
+                return &ptr_;
+            }
+
+            InterfaceType **GetAddressOf() throw() {
+                return &ptr_;
+            }
+
+            InterfaceType **ReleaseAndGetAddressOf() throw() {
+                InternalRelease();
+                return &ptr_;
+            }
+
+            InterfaceType *Detach() throw() {
+                T* ptr = ptr_;
+                ptr_ = nullptr;
+                return ptr;
+            }
+
+            void Attach(InterfaceType *other) throw() {
+                if (ptr_ != other) {
+                    InternalRelease();
+                    ptr_ = other;
+                    InternalAddRef();
+                }
+            }
+
+            unsigned long Reset() {
+                return InternalRelease();
+            }
+
+            HRESULT CopyTo(InterfaceType **ptr) const throw() {
+                InternalAddRef();
+                *ptr = ptr_;
+                return S_OK;
+            }
+
+            HRESULT CopyTo(REFIID riid, void **ptr) const throw() {
+                return ptr_->QueryInterface(riid, ptr);
+            }
+
+            template<typename U>
+            HRESULT CopyTo(U **ptr) const throw() {
+                return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(ptr));
+            }
+
+            template<typename U>
+            HRESULT As(Details::ComPtrRef<ComPtr<U>> p) const throw() {
+                return ptr_->QueryInterface(__uuidof(U), p);
+            }
+
+            template<typename U>
+            HRESULT As(ComPtr<U> *p) const throw() {
+                return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
+            }
+
+            HRESULT AsIID(REFIID riid, ComPtr<IUnknown> *p) const throw() {
+                return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
+            }
+
+            /*
+            HRESULT AsWeak(WeakRef *pWeakRef) const throw() {
+                return ::Microsoft::WRL::AsWeak(ptr_, pWeakRef);
+            }
+            */
+        protected:
+            InterfaceType *ptr_;
+
+            void InternalAddRef() const throw() {
+                if(ptr_)
+                    ptr_->AddRef();
+            }
+
+            unsigned long InternalRelease() throw() {
+                InterfaceType *tmp = ptr_;
+                if(!tmp)
+                    return 0;
+                ptr_ = nullptr;
+                return tmp->Release();
+            }
+        };
+    }
+}
+
+template<typename T>
+void **IID_PPV_ARGS_Helper(::Microsoft::WRL::Details::ComPtrRef<T> pp) throw() {
+    static_assert(__is_base_of(IUnknown, typename T::InterfaceType), "Expected COM interface");
+    return pp;
+}
+
+namespace Windows {
+    namespace Foundation {
+        template<typename T>
+        inline HRESULT ActivateInstance(HSTRING classid, ::Microsoft::WRL::Details::ComPtrRef<T> instance) throw() {
+            return ActivateInstance(classid, instance.ReleaseAndGetAddressOf());
+        }
+
+        template<typename T>
+        inline HRESULT GetActivationFactory(HSTRING classid, ::Microsoft::WRL::Details::ComPtrRef<T> factory) throw() {
+            return RoGetActivationFactory(classid, IID_INS_ARGS(factory.ReleaseAndGetAddressOf()));
+        }
+    }
+}
+
+namespace ABI {
+    namespace Windows {
+        namespace Foundation {
+            template<typename T>
+            inline HRESULT ActivateInstance(HSTRING classid, ::Microsoft::WRL::Details::ComPtrRef<T> instance) throw() {
+                return ActivateInstance(classid, instance.ReleaseAndGetAddressOf());
+            }
+
+            template<typename T>
+            inline HRESULT GetActivationFactory(HSTRING classid, ::Microsoft::WRL::Details::ComPtrRef<T> factory) throw() {
+                return RoGetActivationFactory(classid, IID_INS_ARGS(factory.ReleaseAndGetAddressOf()));
+            }
+        }
+    }
+}
+
+#endif
diff --git a/x86_64-w64-mingw32/include/wrl/internal.h b/x86_64-w64-mingw32/include/wrl/internal.h
new file mode 100644
index 0000000..715ef74
--- /dev/null
+++ b/x86_64-w64-mingw32/include/wrl/internal.h
@@ -0,0 +1,36 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WRL_INTERNAL_H_
+#define _WRL_INTERNAL_H_
+
+#include <windows.h>
+
+namespace Microsoft {
+    namespace WRL {
+        namespace Details {
+            struct BoolStruct {
+                int Member;
+            };
+
+            typedef int BoolStruct::* BoolType;
+
+            inline void DECLSPEC_NORETURN RaiseException(HRESULT hr, DWORD flags = EXCEPTION_NONCONTINUABLE) throw() {
+                ::RaiseException(static_cast<DWORD>(hr), flags, 0, NULL);
+            }
+
+            template <bool b, typename T = void>
+            struct EnableIf {};
+
+            template <typename T>
+            struct EnableIf<true, T> {
+                typedef T type;
+            };
+        }
+    }
+}
+
+#endif
diff --git a/x86_64-w64-mingw32/include/wrl/module.h b/x86_64-w64-mingw32/include/wrl/module.h
new file mode 100644
index 0000000..4ac93ca
--- /dev/null
+++ b/x86_64-w64-mingw32/include/wrl/module.h
@@ -0,0 +1,23 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WRL_MODULE_H_
+#define _WRL_MODULE_H_
+
+#include <roapi.h>
+#include <activation.h>
+#include <winstring.h>
+#include <intrin.h>
+#include <winapifamily.h>
+
+/* #include <wrl/def.h> */
+#include <wrl/internal.h>
+#include <wrl/client.h>
+/* #include <wrl/implements.h> */
+/* #include <wrl/ftm.h> */
+#include <wrl/wrappers/corewrappers.h>
+
+#endif
diff --git a/x86_64-w64-mingw32/include/wrl/wrappers/corewrappers.h b/x86_64-w64-mingw32/include/wrl/wrappers/corewrappers.h
new file mode 100644
index 0000000..221d9cc
--- /dev/null
+++ b/x86_64-w64-mingw32/include/wrl/wrappers/corewrappers.h
@@ -0,0 +1,117 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WRL_COREWRAPPERS_H_
+#define _WRL_COREWRAPPERS_H_
+
+#include <windows.h>
+#include <intsafe.h>
+#include <winstring.h>
+#include <roapi.h>
+
+/* #include <wrl/def.h> */
+#include <wrl/internal.h>
+
+namespace Microsoft {
+    namespace WRL {
+        namespace Details {
+            struct Dummy {};
+        }
+
+        namespace Wrappers {
+            class HStringReference {
+            private:
+                void Init(const wchar_t* str, unsigned int len) {
+                    HRESULT hres = ::WindowsCreateStringReference(str, len, &header_, &hstr_);
+                    if (FAILED(hres))
+                        ::Microsoft::WRL::Details::RaiseException(hres);
+                }
+
+                HStringReference() : hstr_(nullptr) {}
+
+            public:
+                HStringReference(const wchar_t* str, unsigned int len) throw() : hstr_(nullptr) {
+                    Init(str, len);
+                }
+
+                template<unsigned int sizeDest>
+                 explicit HStringReference(wchar_t const (&str)[sizeDest]) throw() : hstr_(nullptr) {
+                    Init(str, sizeDest - 1);
+                }
+
+                template <size_t sizeDest>
+                explicit HStringReference(wchar_t (&strRef)[sizeDest]) throw() {
+                    const wchar_t *str = static_cast<const wchar_t*>(strRef);
+                    Init(str, ::wcslen(str));
+                }
+
+                template<typename T>
+                explicit HStringReference(const T &strRef) throw() : hstr_(nullptr) {
+                    const wchar_t* str = static_cast<const wchar_t*>(strRef);
+                    size_t len = ::wcslen(str);
+                    if(static_cast<size_t>(static_cast<unsigned int>(len)) != len)
+                        ::Microsoft::WRL::Details::RaiseException(INTSAFE_E_ARITHMETIC_OVERFLOW);
+                    Init(str, len);
+                }
+
+                HStringReference(const HStringReference &other) throw() : hstr_(nullptr) {
+                    unsigned int len = 0;
+                    const wchar_t* value = other.GetRawBuffer(&len);
+                    Init(value, len);
+                }
+
+                ~HStringReference() throw() {
+                    hstr_ = nullptr;
+                }
+
+                HStringReference& operator=(const HStringReference &other) throw() {
+                    unsigned int len = 0;
+                    const wchar_t* value = other.GetRawBuffer(&len);
+                    Init(value, len);
+                    return *this;
+                }
+
+                HSTRING Get() const throw() {
+                    return hstr_;
+                }
+
+                const wchar_t *GetRawBuffer(unsigned int *len) const {
+                    return ::WindowsGetStringRawBuffer(hstr_, len);
+                }
+
+                HRESULT CopyTo(HSTRING *str) const throw() {
+                    return ::WindowsDuplicateString(hstr_, str);
+                }
+
+                friend class HString;
+
+            protected:
+                HSTRING_HEADER header_;
+                HSTRING hstr_;
+            };
+
+            class RoInitializeWrapper {
+            public:
+                RoInitializeWrapper(RO_INIT_TYPE flags) {
+                    hres = ::Windows::Foundation::Initialize(flags);
+                }
+
+                ~RoInitializeWrapper() {
+                    if(SUCCEEDED(hres))
+                        ::Windows::Foundation::Uninitialize();
+                }
+
+                operator HRESULT() {
+                    return hres;
+                }
+            private:
+                HRESULT hres;
+            };
+        }
+    }
+}
+
+#endif
diff --git a/x86_64-w64-mingw32/include/ws2tcpip.h b/x86_64-w64-mingw32/include/ws2tcpip.h
index ae940b0..c530d57 100644
--- a/x86_64-w64-mingw32/include/ws2tcpip.h
+++ b/x86_64-w64-mingw32/include/ws2tcpip.h
@@ -221,6 +221,9 @@
 #define AI_FQDN                     0x00020000
 #define AI_FILESERVER               0x00040000
 #endif
+#if (_WIN32_WINNT >= 0x0602)
+#define AI_DISABLE_IDN_ENCODING     0x00080000
+#endif
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/x86_64-w64-mingw32/include/wsmandisp.h b/x86_64-w64-mingw32/include/wsmandisp.h
index f72464d..9c5c0b8 100644
--- a/x86_64-w64-mingw32/include/wsmandisp.h
+++ b/x86_64-w64-mingw32/include/wsmandisp.h
@@ -253,9 +253,9 @@
 IWSMan : public IDispatch
 {
     virtual HRESULT STDMETHODCALLTYPE CreateSession(
-        BSTR connection = L"",
-        LONG flags = 0,
-        IDispatch *connectionOptions = 0,
+        BSTR connection,
+        LONG flags,
+        IDispatch *connectionOptions,
         IDispatch **session) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE CreateConnectionOptions(
@@ -451,7 +451,7 @@
 IWSManEx : public IWSMan
 {
     virtual HRESULT STDMETHODCALLTYPE CreateResourceLocator(
-        BSTR strResourceLocator = L"",
+        BSTR strResourceLocator,
         IDispatch **newResourceLocator) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SessionFlagUTF8(
@@ -2452,19 +2452,19 @@
 {
     virtual HRESULT STDMETHODCALLTYPE Get(
         VARIANT resourceUri,
-        LONG flags = 0,
+        LONG flags,
         BSTR *resource) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Put(
         VARIANT resourceUri,
         BSTR resource,
-        LONG flags = 0,
+        LONG flags,
         BSTR *resultResource) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Create(
         VARIANT resourceUri,
         BSTR resource,
-        LONG flags = 0,
+        LONG flags,
         BSTR *newUri) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Delete(
@@ -2475,18 +2475,18 @@
         BSTR actionUri,
         VARIANT resourceUri,
         BSTR parameters,
-        LONG flags = 0,
+        LONG flags,
         BSTR *result) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Enumerate(
         VARIANT resourceUri,
-        BSTR filter = L"",
-        BSTR dialect = L"",
-        LONG flags = 0,
+        BSTR filter,
+        BSTR dialect,
+        LONG flags,
         IDispatch **resultSet) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Identify(
-        LONG flags = 0,
+        LONG flags,
         BSTR *result) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE get_Error(
@@ -3441,7 +3441,7 @@
     virtual HRESULT STDMETHODCALLTYPE ConfigSDDL(
         IDispatch *session,
         VARIANT resourceUri,
-        LONG flags = 0,
+        LONG flags,
         BSTR *resource) = 0;
 
 };
diff --git a/x86_64-w64-mingw32/include/wspiapi.h b/x86_64-w64-mingw32/include/wspiapi.h
index 3328955..476a561 100644
--- a/x86_64-w64-mingw32/include/wspiapi.h
+++ b/x86_64-w64-mingw32/include/wspiapi.h
@@ -23,7 +23,7 @@
 #ifndef __cplusplus
 #define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0]))
 #else
-template <typename __CountofType,size_t _N> char (&__wspiapi_countof_helper(__CountofType (&_Array)[_N]))[_N];
+template <typename __CountofType,size_t __wspiapi_countof_helper_N> char (&__wspiapi_countof_helper(__CountofType (&_Array)[__wspiapi_countof_helper_N]))[__wspiapi_countof_helper_N];
 #define _WSPIAPI_COUNTOF(_Array) sizeof(__wspiapi_countof_helper(_Array))
 #endif
 #endif
diff --git a/x86_64-w64-mingw32/include/xpsobjectmodel.h b/x86_64-w64-mingw32/include/xpsobjectmodel.h
index 5fce3fd..d34706e 100644
--- a/x86_64-w64-mingw32/include/xpsobjectmodel.h
+++ b/x86_64-w64-mingw32/include/xpsobjectmodel.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from /usr/local/google/buildbot/src/android/mingw/toolchain/mingw/mingw-w64-v4.0.4/mingw-w64-headers/include/xpsobjectmodel.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.6 from include/xpsobjectmodel.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/x86_64-w64-mingw32/lib/CRT_fp10.o b/x86_64-w64-mingw32/lib/CRT_fp10.o
index 79a612b..b37e5d4 100644
--- a/x86_64-w64-mingw32/lib/CRT_fp10.o
+++ b/x86_64-w64-mingw32/lib/CRT_fp10.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/CRT_fp8.o b/x86_64-w64-mingw32/lib/CRT_fp8.o
index 7a252a9..06b381b 100644
--- a/x86_64-w64-mingw32/lib/CRT_fp8.o
+++ b/x86_64-w64-mingw32/lib/CRT_fp8.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/CRT_glob.o b/x86_64-w64-mingw32/lib/CRT_glob.o
index 509fa44..2203529 100644
--- a/x86_64-w64-mingw32/lib/CRT_glob.o
+++ b/x86_64-w64-mingw32/lib/CRT_glob.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/CRT_noglob.o b/x86_64-w64-mingw32/lib/CRT_noglob.o
index d482ba8..a3283d7 100644
--- a/x86_64-w64-mingw32/lib/CRT_noglob.o
+++ b/x86_64-w64-mingw32/lib/CRT_noglob.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/binmode.o b/x86_64-w64-mingw32/lib/binmode.o
index 99a799c..1d92e89 100644
--- a/x86_64-w64-mingw32/lib/binmode.o
+++ b/x86_64-w64-mingw32/lib/binmode.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/crt1.o b/x86_64-w64-mingw32/lib/crt1.o
index 3f93e9c..e369d64 100644
--- a/x86_64-w64-mingw32/lib/crt1.o
+++ b/x86_64-w64-mingw32/lib/crt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/crt1u.o b/x86_64-w64-mingw32/lib/crt1u.o
index 1a0a46c..00c6d8f 100644
--- a/x86_64-w64-mingw32/lib/crt1u.o
+++ b/x86_64-w64-mingw32/lib/crt1u.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/crt2.o b/x86_64-w64-mingw32/lib/crt2.o
index 3f93e9c..e369d64 100644
--- a/x86_64-w64-mingw32/lib/crt2.o
+++ b/x86_64-w64-mingw32/lib/crt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/crt2u.o b/x86_64-w64-mingw32/lib/crt2u.o
index 1a0a46c..00c6d8f 100644
--- a/x86_64-w64-mingw32/lib/crt2u.o
+++ b/x86_64-w64-mingw32/lib/crt2u.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/dllcrt1.o b/x86_64-w64-mingw32/lib/dllcrt1.o
index 8d9c0cf..97415e8 100644
--- a/x86_64-w64-mingw32/lib/dllcrt1.o
+++ b/x86_64-w64-mingw32/lib/dllcrt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/dllcrt2.o b/x86_64-w64-mingw32/lib/dllcrt2.o
index 8d9c0cf..97415e8 100644
--- a/x86_64-w64-mingw32/lib/dllcrt2.o
+++ b/x86_64-w64-mingw32/lib/dllcrt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/gcrt0.o b/x86_64-w64-mingw32/lib/gcrt0.o
index 2476c7b..b76428f 100644
--- a/x86_64-w64-mingw32/lib/gcrt0.o
+++ b/x86_64-w64-mingw32/lib/gcrt0.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/gcrt1.o b/x86_64-w64-mingw32/lib/gcrt1.o
index 2476c7b..b76428f 100644
--- a/x86_64-w64-mingw32/lib/gcrt1.o
+++ b/x86_64-w64-mingw32/lib/gcrt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/gcrt2.o b/x86_64-w64-mingw32/lib/gcrt2.o
index 2476c7b..b76428f 100644
--- a/x86_64-w64-mingw32/lib/gcrt2.o
+++ b/x86_64-w64-mingw32/lib/gcrt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/lib6to4svc.a b/x86_64-w64-mingw32/lib/lib6to4svc.a
index 89e714a..34302e4 100644
--- a/x86_64-w64-mingw32/lib/lib6to4svc.a
+++ b/x86_64-w64-mingw32/lib/lib6to4svc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libCINTIME.a b/x86_64-w64-mingw32/lib/libCINTIME.a
index 5423efc..16684cf 100644
--- a/x86_64-w64-mingw32/lib/libCINTIME.a
+++ b/x86_64-w64-mingw32/lib/libCINTIME.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libPS5UI.a b/x86_64-w64-mingw32/lib/libPS5UI.a
index f5974b4..0f67e05 100644
--- a/x86_64-w64-mingw32/lib/libPS5UI.a
+++ b/x86_64-w64-mingw32/lib/libPS5UI.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libPSCRIPT5.a b/x86_64-w64-mingw32/lib/libPSCRIPT5.a
index 18fe03e..416612d 100644
--- a/x86_64-w64-mingw32/lib/libPSCRIPT5.a
+++ b/x86_64-w64-mingw32/lib/libPSCRIPT5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libUNIDRV.a b/x86_64-w64-mingw32/lib/libUNIDRV.a
index d3229c0..3ba427d 100644
--- a/x86_64-w64-mingw32/lib/libUNIDRV.a
+++ b/x86_64-w64-mingw32/lib/libUNIDRV.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libUNIDRVUI.a b/x86_64-w64-mingw32/lib/libUNIDRVUI.a
index abe6457..a2c65e5 100644
--- a/x86_64-w64-mingw32/lib/libUNIDRVUI.a
+++ b/x86_64-w64-mingw32/lib/libUNIDRVUI.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaaaamon.a b/x86_64-w64-mingw32/lib/libaaaamon.a
index 5f467ef..4c45d45 100644
--- a/x86_64-w64-mingw32/lib/libaaaamon.a
+++ b/x86_64-w64-mingw32/lib/libaaaamon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libacledit.a b/x86_64-w64-mingw32/lib/libacledit.a
index fdeb313..2a60831 100644
--- a/x86_64-w64-mingw32/lib/libacledit.a
+++ b/x86_64-w64-mingw32/lib/libacledit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaclui.a b/x86_64-w64-mingw32/lib/libaclui.a
index 8710619..ccae574 100644
--- a/x86_64-w64-mingw32/lib/libaclui.a
+++ b/x86_64-w64-mingw32/lib/libaclui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libactiveds.a b/x86_64-w64-mingw32/lib/libactiveds.a
index f8f9644..4a3ac3b 100644
--- a/x86_64-w64-mingw32/lib/libactiveds.a
+++ b/x86_64-w64-mingw32/lib/libactiveds.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libactxprxy.a b/x86_64-w64-mingw32/lib/libactxprxy.a
index 07a736b..d335e00 100644
--- a/x86_64-w64-mingw32/lib/libactxprxy.a
+++ b/x86_64-w64-mingw32/lib/libactxprxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadmparse.a b/x86_64-w64-mingw32/lib/libadmparse.a
index f2f870c..a669021 100644
--- a/x86_64-w64-mingw32/lib/libadmparse.a
+++ b/x86_64-w64-mingw32/lib/libadmparse.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadmwprox.a b/x86_64-w64-mingw32/lib/libadmwprox.a
index e908111..2f0c760 100644
--- a/x86_64-w64-mingw32/lib/libadmwprox.a
+++ b/x86_64-w64-mingw32/lib/libadmwprox.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadptif.a b/x86_64-w64-mingw32/lib/libadptif.a
index bc9128d..de2e1e6 100644
--- a/x86_64-w64-mingw32/lib/libadptif.a
+++ b/x86_64-w64-mingw32/lib/libadptif.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadrot.a b/x86_64-w64-mingw32/lib/libadrot.a
index 46c51bc..aaab4cf 100644
--- a/x86_64-w64-mingw32/lib/libadrot.a
+++ b/x86_64-w64-mingw32/lib/libadrot.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsiis.a b/x86_64-w64-mingw32/lib/libadsiis.a
index bf2f606..e2008f5 100644
--- a/x86_64-w64-mingw32/lib/libadsiis.a
+++ b/x86_64-w64-mingw32/lib/libadsiis.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsiisex.a b/x86_64-w64-mingw32/lib/libadsiisex.a
index 077f1aa..7dcc86c 100644
--- a/x86_64-w64-mingw32/lib/libadsiisex.a
+++ b/x86_64-w64-mingw32/lib/libadsiisex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsldp.a b/x86_64-w64-mingw32/lib/libadsldp.a
index 38873e1..73730a9 100644
--- a/x86_64-w64-mingw32/lib/libadsldp.a
+++ b/x86_64-w64-mingw32/lib/libadsldp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsldpc.a b/x86_64-w64-mingw32/lib/libadsldpc.a
index dea64ac..0bdf437 100644
--- a/x86_64-w64-mingw32/lib/libadsldpc.a
+++ b/x86_64-w64-mingw32/lib/libadsldpc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsmsext.a b/x86_64-w64-mingw32/lib/libadsmsext.a
index 428602c..b4f6590 100644
--- a/x86_64-w64-mingw32/lib/libadsmsext.a
+++ b/x86_64-w64-mingw32/lib/libadsmsext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadsnt.a b/x86_64-w64-mingw32/lib/libadsnt.a
index 6344503..de5b2d5 100644
--- a/x86_64-w64-mingw32/lib/libadsnt.a
+++ b/x86_64-w64-mingw32/lib/libadsnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadvapi32.a b/x86_64-w64-mingw32/lib/libadvapi32.a
index 6250523..c90ce4e 100644
--- a/x86_64-w64-mingw32/lib/libadvapi32.a
+++ b/x86_64-w64-mingw32/lib/libadvapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libadvpack.a b/x86_64-w64-mingw32/lib/libadvpack.a
index 6957abc..6ad5fe5 100644
--- a/x86_64-w64-mingw32/lib/libadvpack.a
+++ b/x86_64-w64-mingw32/lib/libadvpack.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaelupsvc.a b/x86_64-w64-mingw32/lib/libaelupsvc.a
index b8f9c28..6bd3936 100644
--- a/x86_64-w64-mingw32/lib/libaelupsvc.a
+++ b/x86_64-w64-mingw32/lib/libaelupsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentanm.a b/x86_64-w64-mingw32/lib/libagentanm.a
index 3fffa6e..b030ef5 100644
--- a/x86_64-w64-mingw32/lib/libagentanm.a
+++ b/x86_64-w64-mingw32/lib/libagentanm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentctl.a b/x86_64-w64-mingw32/lib/libagentctl.a
index b3a41d6..d7f2dd9 100644
--- a/x86_64-w64-mingw32/lib/libagentctl.a
+++ b/x86_64-w64-mingw32/lib/libagentctl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentdp2.a b/x86_64-w64-mingw32/lib/libagentdp2.a
index 7e591fa..5d63e34 100644
--- a/x86_64-w64-mingw32/lib/libagentdp2.a
+++ b/x86_64-w64-mingw32/lib/libagentdp2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentdpv.a b/x86_64-w64-mingw32/lib/libagentdpv.a
index 183a598..0a8e72f 100644
--- a/x86_64-w64-mingw32/lib/libagentdpv.a
+++ b/x86_64-w64-mingw32/lib/libagentdpv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentmpx.a b/x86_64-w64-mingw32/lib/libagentmpx.a
index 0772104..24c850e 100644
--- a/x86_64-w64-mingw32/lib/libagentmpx.a
+++ b/x86_64-w64-mingw32/lib/libagentmpx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentpsh.a b/x86_64-w64-mingw32/lib/libagentpsh.a
index 527397b..a605499 100644
--- a/x86_64-w64-mingw32/lib/libagentpsh.a
+++ b/x86_64-w64-mingw32/lib/libagentpsh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagentsr.a b/x86_64-w64-mingw32/lib/libagentsr.a
index 9f9e4bb..98ce914 100644
--- a/x86_64-w64-mingw32/lib/libagentsr.a
+++ b/x86_64-w64-mingw32/lib/libagentsr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagrmco64.a b/x86_64-w64-mingw32/lib/libagrmco64.a
index 848a32b..579ecab 100644
--- a/x86_64-w64-mingw32/lib/libagrmco64.a
+++ b/x86_64-w64-mingw32/lib/libagrmco64.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libagtintl.a b/x86_64-w64-mingw32/lib/libagtintl.a
index fea8de1..10dc6f7 100644
--- a/x86_64-w64-mingw32/lib/libagtintl.a
+++ b/x86_64-w64-mingw32/lib/libagtintl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libakscoinst.a b/x86_64-w64-mingw32/lib/libakscoinst.a
index e44a79f..0072e1c 100644
--- a/x86_64-w64-mingw32/lib/libakscoinst.a
+++ b/x86_64-w64-mingw32/lib/libakscoinst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libalrsvc.a b/x86_64-w64-mingw32/lib/libalrsvc.a
index f4499fa..3a95061 100644
--- a/x86_64-w64-mingw32/lib/libalrsvc.a
+++ b/x86_64-w64-mingw32/lib/libalrsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libamstream.a b/x86_64-w64-mingw32/lib/libamstream.a
index 2133aa8..400b7fc 100644
--- a/x86_64-w64-mingw32/lib/libamstream.a
+++ b/x86_64-w64-mingw32/lib/libamstream.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libamstrmid.a b/x86_64-w64-mingw32/lib/libamstrmid.a
new file mode 100644
index 0000000..e5a88e6
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/libamstrmid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libapcups.a b/x86_64-w64-mingw32/lib/libapcups.a
index 347c1db..553af10 100644
--- a/x86_64-w64-mingw32/lib/libapcups.a
+++ b/x86_64-w64-mingw32/lib/libapcups.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libapphelp.a b/x86_64-w64-mingw32/lib/libapphelp.a
index 9df03e3..1bdbc18 100644
--- a/x86_64-w64-mingw32/lib/libapphelp.a
+++ b/x86_64-w64-mingw32/lib/libapphelp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libappmgmts.a b/x86_64-w64-mingw32/lib/libappmgmts.a
index 60c61be..ad47b58 100644
--- a/x86_64-w64-mingw32/lib/libappmgmts.a
+++ b/x86_64-w64-mingw32/lib/libappmgmts.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libappmgr.a b/x86_64-w64-mingw32/lib/libappmgr.a
index 9728166..adff214 100644
--- a/x86_64-w64-mingw32/lib/libappmgr.a
+++ b/x86_64-w64-mingw32/lib/libappmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaqadmin.a b/x86_64-w64-mingw32/lib/libaqadmin.a
index 5b20953..74a5960 100644
--- a/x86_64-w64-mingw32/lib/libaqadmin.a
+++ b/x86_64-w64-mingw32/lib/libaqadmin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaqueue.a b/x86_64-w64-mingw32/lib/libaqueue.a
index 3239822..cfe723c 100644
--- a/x86_64-w64-mingw32/lib/libaqueue.a
+++ b/x86_64-w64-mingw32/lib/libaqueue.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libasp.a b/x86_64-w64-mingw32/lib/libasp.a
index 4f1935c..8ee81fb 100644
--- a/x86_64-w64-mingw32/lib/libasp.a
+++ b/x86_64-w64-mingw32/lib/libasp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaspperf.a b/x86_64-w64-mingw32/lib/libaspperf.a
index 89e2e8b..714a46f 100644
--- a/x86_64-w64-mingw32/lib/libaspperf.a
+++ b/x86_64-w64-mingw32/lib/libaspperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libasycfilt.a b/x86_64-w64-mingw32/lib/libasycfilt.a
index 9dd233a..dbcf664 100644
--- a/x86_64-w64-mingw32/lib/libasycfilt.a
+++ b/x86_64-w64-mingw32/lib/libasycfilt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libatkctrs.a b/x86_64-w64-mingw32/lib/libatkctrs.a
index ab557a7..35ad47f 100644
--- a/x86_64-w64-mingw32/lib/libatkctrs.a
+++ b/x86_64-w64-mingw32/lib/libatkctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libatl.a b/x86_64-w64-mingw32/lib/libatl.a
index d134d79..49880ce 100644
--- a/x86_64-w64-mingw32/lib/libatl.a
+++ b/x86_64-w64-mingw32/lib/libatl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libatmlib.a b/x86_64-w64-mingw32/lib/libatmlib.a
index 1ac3a6a..c8ab84b 100644
--- a/x86_64-w64-mingw32/lib/libatmlib.a
+++ b/x86_64-w64-mingw32/lib/libatmlib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libatmpvcno.a b/x86_64-w64-mingw32/lib/libatmpvcno.a
index 3bd07a3..1dc3874 100644
--- a/x86_64-w64-mingw32/lib/libatmpvcno.a
+++ b/x86_64-w64-mingw32/lib/libatmpvcno.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libatrace.a b/x86_64-w64-mingw32/lib/libatrace.a
index 067e6d6..ffe867c 100644
--- a/x86_64-w64-mingw32/lib/libatrace.a
+++ b/x86_64-w64-mingw32/lib/libatrace.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libaudiosrv.a b/x86_64-w64-mingw32/lib/libaudiosrv.a
index e39e335..971a9bb 100644
--- a/x86_64-w64-mingw32/lib/libaudiosrv.a
+++ b/x86_64-w64-mingw32/lib/libaudiosrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libauthz.a b/x86_64-w64-mingw32/lib/libauthz.a
index 767b872..412f9b1 100644
--- a/x86_64-w64-mingw32/lib/libauthz.a
+++ b/x86_64-w64-mingw32/lib/libauthz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libautodisc.a b/x86_64-w64-mingw32/lib/libautodisc.a
index 94d8862..004fe73 100644
--- a/x86_64-w64-mingw32/lib/libautodisc.a
+++ b/x86_64-w64-mingw32/lib/libautodisc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libavicap32.a b/x86_64-w64-mingw32/lib/libavicap32.a
index 6b33515..b416a71 100644
--- a/x86_64-w64-mingw32/lib/libavicap32.a
+++ b/x86_64-w64-mingw32/lib/libavicap32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libavifil32.a b/x86_64-w64-mingw32/lib/libavifil32.a
index 1e6bae0..2467296 100644
--- a/x86_64-w64-mingw32/lib/libavifil32.a
+++ b/x86_64-w64-mingw32/lib/libavifil32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libavrt.a b/x86_64-w64-mingw32/lib/libavrt.a
index ce3e0a8..e3e2898 100644
--- a/x86_64-w64-mingw32/lib/libavrt.a
+++ b/x86_64-w64-mingw32/lib/libavrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libazroles.a b/x86_64-w64-mingw32/lib/libazroles.a
index 090f6f9..7aad677 100644
--- a/x86_64-w64-mingw32/lib/libazroles.a
+++ b/x86_64-w64-mingw32/lib/libazroles.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libazroleui.a b/x86_64-w64-mingw32/lib/libazroleui.a
index d6e84ee..503eefb 100644
--- a/x86_64-w64-mingw32/lib/libazroleui.a
+++ b/x86_64-w64-mingw32/lib/libazroleui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbasesrv.a b/x86_64-w64-mingw32/lib/libbasesrv.a
index 18d5cd0..6a660d9 100644
--- a/x86_64-w64-mingw32/lib/libbasesrv.a
+++ b/x86_64-w64-mingw32/lib/libbasesrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbatmeter.a b/x86_64-w64-mingw32/lib/libbatmeter.a
index 6076ad2..f1f9466 100644
--- a/x86_64-w64-mingw32/lib/libbatmeter.a
+++ b/x86_64-w64-mingw32/lib/libbatmeter.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbatt.a b/x86_64-w64-mingw32/lib/libbatt.a
index 178198f..db8b977 100644
--- a/x86_64-w64-mingw32/lib/libbatt.a
+++ b/x86_64-w64-mingw32/lib/libbatt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbcrypt.a b/x86_64-w64-mingw32/lib/libbcrypt.a
index 62dadff..cafc4bc 100644
--- a/x86_64-w64-mingw32/lib/libbcrypt.a
+++ b/x86_64-w64-mingw32/lib/libbcrypt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbidispl.a b/x86_64-w64-mingw32/lib/libbidispl.a
index 65ed3f7..7f32192 100644
--- a/x86_64-w64-mingw32/lib/libbidispl.a
+++ b/x86_64-w64-mingw32/lib/libbidispl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbitsprx2.a b/x86_64-w64-mingw32/lib/libbitsprx2.a
index 68bbae4..5fac798 100644
--- a/x86_64-w64-mingw32/lib/libbitsprx2.a
+++ b/x86_64-w64-mingw32/lib/libbitsprx2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbitsprx3.a b/x86_64-w64-mingw32/lib/libbitsprx3.a
index f45bcd3..1fa7987 100644
--- a/x86_64-w64-mingw32/lib/libbitsprx3.a
+++ b/x86_64-w64-mingw32/lib/libbitsprx3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbnts.a b/x86_64-w64-mingw32/lib/libbnts.a
index 9a9bc4f..6cc17b5 100644
--- a/x86_64-w64-mingw32/lib/libbnts.a
+++ b/x86_64-w64-mingw32/lib/libbnts.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbootvid.a b/x86_64-w64-mingw32/lib/libbootvid.a
index 8de9c45..721917c 100644
--- a/x86_64-w64-mingw32/lib/libbootvid.a
+++ b/x86_64-w64-mingw32/lib/libbootvid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbrowscap.a b/x86_64-w64-mingw32/lib/libbrowscap.a
index 9ac54fd..d05c98a 100644
--- a/x86_64-w64-mingw32/lib/libbrowscap.a
+++ b/x86_64-w64-mingw32/lib/libbrowscap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbrowser.a b/x86_64-w64-mingw32/lib/libbrowser.a
index a911dc3..466dca3 100644
--- a/x86_64-w64-mingw32/lib/libbrowser.a
+++ b/x86_64-w64-mingw32/lib/libbrowser.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbrowseui.a b/x86_64-w64-mingw32/lib/libbrowseui.a
index cfd1e40..ca554ea 100644
--- a/x86_64-w64-mingw32/lib/libbrowseui.a
+++ b/x86_64-w64-mingw32/lib/libbrowseui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbrpinfo.a b/x86_64-w64-mingw32/lib/libbrpinfo.a
index c7196cb..68fe548 100644
--- a/x86_64-w64-mingw32/lib/libbrpinfo.a
+++ b/x86_64-w64-mingw32/lib/libbrpinfo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbthci.a b/x86_64-w64-mingw32/lib/libbthci.a
index 1fff068..5e28b29 100644
--- a/x86_64-w64-mingw32/lib/libbthci.a
+++ b/x86_64-w64-mingw32/lib/libbthci.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbthprops.a b/x86_64-w64-mingw32/lib/libbthprops.a
index eafbd8a..e3a9b43 100644
--- a/x86_64-w64-mingw32/lib/libbthprops.a
+++ b/x86_64-w64-mingw32/lib/libbthprops.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbthserv.a b/x86_64-w64-mingw32/lib/libbthserv.a
index 44f5c56..fb1c7e2 100644
--- a/x86_64-w64-mingw32/lib/libbthserv.a
+++ b/x86_64-w64-mingw32/lib/libbthserv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libbtpanui.a b/x86_64-w64-mingw32/lib/libbtpanui.a
index 1b5d112..1324155 100644
--- a/x86_64-w64-mingw32/lib/libbtpanui.a
+++ b/x86_64-w64-mingw32/lib/libbtpanui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libc_g18030.a b/x86_64-w64-mingw32/lib/libc_g18030.a
index 64081ad..28f3fa9 100644
--- a/x86_64-w64-mingw32/lib/libc_g18030.a
+++ b/x86_64-w64-mingw32/lib/libc_g18030.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libc_is2022.a b/x86_64-w64-mingw32/lib/libc_is2022.a
index 9645b82..081fb76 100644
--- a/x86_64-w64-mingw32/lib/libc_is2022.a
+++ b/x86_64-w64-mingw32/lib/libc_is2022.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libc_iscii.a b/x86_64-w64-mingw32/lib/libc_iscii.a
index 9dd00d8..0678112 100644
--- a/x86_64-w64-mingw32/lib/libc_iscii.a
+++ b/x86_64-w64-mingw32/lib/libc_iscii.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcabinet.a b/x86_64-w64-mingw32/lib/libcabinet.a
index 6cfef2e..93bbfba 100644
--- a/x86_64-w64-mingw32/lib/libcabinet.a
+++ b/x86_64-w64-mingw32/lib/libcabinet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcabview.a b/x86_64-w64-mingw32/lib/libcabview.a
index 7dd5739..b65ee3b 100644
--- a/x86_64-w64-mingw32/lib/libcabview.a
+++ b/x86_64-w64-mingw32/lib/libcabview.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcamocx.a b/x86_64-w64-mingw32/lib/libcamocx.a
index 38c8532..60fc1bd 100644
--- a/x86_64-w64-mingw32/lib/libcamocx.a
+++ b/x86_64-w64-mingw32/lib/libcamocx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcards.a b/x86_64-w64-mingw32/lib/libcards.a
index ce8b72a..b451917 100644
--- a/x86_64-w64-mingw32/lib/libcards.a
+++ b/x86_64-w64-mingw32/lib/libcards.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcatsrv.a b/x86_64-w64-mingw32/lib/libcatsrv.a
index 587f03d..3a53cee 100644
--- a/x86_64-w64-mingw32/lib/libcatsrv.a
+++ b/x86_64-w64-mingw32/lib/libcatsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcatsrvps.a b/x86_64-w64-mingw32/lib/libcatsrvps.a
index e826ed7..8b92ba4 100644
--- a/x86_64-w64-mingw32/lib/libcatsrvps.a
+++ b/x86_64-w64-mingw32/lib/libcatsrvps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcatsrvut.a b/x86_64-w64-mingw32/lib/libcatsrvut.a
index f9b5fdb..9af7a54 100644
--- a/x86_64-w64-mingw32/lib/libcatsrvut.a
+++ b/x86_64-w64-mingw32/lib/libcatsrvut.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libccfgnt.a b/x86_64-w64-mingw32/lib/libccfgnt.a
index 2afc09f..b50ac4d 100644
--- a/x86_64-w64-mingw32/lib/libccfgnt.a
+++ b/x86_64-w64-mingw32/lib/libccfgnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcdfview.a b/x86_64-w64-mingw32/lib/libcdfview.a
index 31022b1..08fd07e 100644
--- a/x86_64-w64-mingw32/lib/libcdfview.a
+++ b/x86_64-w64-mingw32/lib/libcdfview.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcdm.a b/x86_64-w64-mingw32/lib/libcdm.a
index cd45ed2..782ed86 100644
--- a/x86_64-w64-mingw32/lib/libcdm.a
+++ b/x86_64-w64-mingw32/lib/libcdm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcdosys.a b/x86_64-w64-mingw32/lib/libcdosys.a
index 6bf3510..d75ed18 100644
--- a/x86_64-w64-mingw32/lib/libcdosys.a
+++ b/x86_64-w64-mingw32/lib/libcdosys.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcertcli.a b/x86_64-w64-mingw32/lib/libcertcli.a
index 8c96ffd..45ba323 100644
--- a/x86_64-w64-mingw32/lib/libcertcli.a
+++ b/x86_64-w64-mingw32/lib/libcertcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcertmgr.a b/x86_64-w64-mingw32/lib/libcertmgr.a
index 47adfed..3f622b9 100644
--- a/x86_64-w64-mingw32/lib/libcertmgr.a
+++ b/x86_64-w64-mingw32/lib/libcertmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcertobj.a b/x86_64-w64-mingw32/lib/libcertobj.a
index d876e7e..b5e3238 100644
--- a/x86_64-w64-mingw32/lib/libcertobj.a
+++ b/x86_64-w64-mingw32/lib/libcertobj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcfgbkend.a b/x86_64-w64-mingw32/lib/libcfgbkend.a
index 04d8739..2d7a14f 100644
--- a/x86_64-w64-mingw32/lib/libcfgbkend.a
+++ b/x86_64-w64-mingw32/lib/libcfgbkend.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcfgmgr32.a b/x86_64-w64-mingw32/lib/libcfgmgr32.a
index cf68884..ff5890e 100644
--- a/x86_64-w64-mingw32/lib/libcfgmgr32.a
+++ b/x86_64-w64-mingw32/lib/libcfgmgr32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libchsbrkr.a b/x86_64-w64-mingw32/lib/libchsbrkr.a
index 562224f..bb5c482 100644
--- a/x86_64-w64-mingw32/lib/libchsbrkr.a
+++ b/x86_64-w64-mingw32/lib/libchsbrkr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libchtbrkr.a b/x86_64-w64-mingw32/lib/libchtbrkr.a
index 3ecd99c..04b59f0 100644
--- a/x86_64-w64-mingw32/lib/libchtbrkr.a
+++ b/x86_64-w64-mingw32/lib/libchtbrkr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libchtskdic.a b/x86_64-w64-mingw32/lib/libchtskdic.a
index a0b0a40..31f9719 100644
--- a/x86_64-w64-mingw32/lib/libchtskdic.a
+++ b/x86_64-w64-mingw32/lib/libchtskdic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libciadmin.a b/x86_64-w64-mingw32/lib/libciadmin.a
index 0e7edb0..81607e7 100644
--- a/x86_64-w64-mingw32/lib/libciadmin.a
+++ b/x86_64-w64-mingw32/lib/libciadmin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcic.a b/x86_64-w64-mingw32/lib/libcic.a
index 5c233f8..4bc3efc 100644
--- a/x86_64-w64-mingw32/lib/libcic.a
+++ b/x86_64-w64-mingw32/lib/libcic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcimwin32.a b/x86_64-w64-mingw32/lib/libcimwin32.a
index d2c9c1a..ff60142 100644
--- a/x86_64-w64-mingw32/lib/libcimwin32.a
+++ b/x86_64-w64-mingw32/lib/libcimwin32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libciodm.a b/x86_64-w64-mingw32/lib/libciodm.a
index 0765bb8..d1938d8 100644
--- a/x86_64-w64-mingw32/lib/libciodm.a
+++ b/x86_64-w64-mingw32/lib/libciodm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclasspnp.a b/x86_64-w64-mingw32/lib/libclasspnp.a
index ab5531f..2b41f78 100644
--- a/x86_64-w64-mingw32/lib/libclasspnp.a
+++ b/x86_64-w64-mingw32/lib/libclasspnp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclb.a b/x86_64-w64-mingw32/lib/libclb.a
index 6aa4dd0..99aaa7b 100644
--- a/x86_64-w64-mingw32/lib/libclb.a
+++ b/x86_64-w64-mingw32/lib/libclb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclbcatex.a b/x86_64-w64-mingw32/lib/libclbcatex.a
index 213858d..f6a7bad 100644
--- a/x86_64-w64-mingw32/lib/libclbcatex.a
+++ b/x86_64-w64-mingw32/lib/libclbcatex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclbcatq.a b/x86_64-w64-mingw32/lib/libclbcatq.a
index bdcd0d0..f9b907b 100644
--- a/x86_64-w64-mingw32/lib/libclbcatq.a
+++ b/x86_64-w64-mingw32/lib/libclbcatq.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclfsw32.a b/x86_64-w64-mingw32/lib/libclfsw32.a
index e01fd55..d09dd89 100644
--- a/x86_64-w64-mingw32/lib/libclfsw32.a
+++ b/x86_64-w64-mingw32/lib/libclfsw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcliconfg.a b/x86_64-w64-mingw32/lib/libcliconfg.a
index 79a83df..fa7c5da 100644
--- a/x86_64-w64-mingw32/lib/libcliconfg.a
+++ b/x86_64-w64-mingw32/lib/libcliconfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libclusapi.a b/x86_64-w64-mingw32/lib/libclusapi.a
index a4600c5..eb3f4f1 100644
--- a/x86_64-w64-mingw32/lib/libclusapi.a
+++ b/x86_64-w64-mingw32/lib/libclusapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmcfg32.a b/x86_64-w64-mingw32/lib/libcmcfg32.a
index 7dabbaa..2df3057 100644
--- a/x86_64-w64-mingw32/lib/libcmcfg32.a
+++ b/x86_64-w64-mingw32/lib/libcmcfg32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmdial32.a b/x86_64-w64-mingw32/lib/libcmdial32.a
index 421cb55..dfa979a 100644
--- a/x86_64-w64-mingw32/lib/libcmdial32.a
+++ b/x86_64-w64-mingw32/lib/libcmdial32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmpbk32.a b/x86_64-w64-mingw32/lib/libcmpbk32.a
index 2fd9c17..c304864 100644
--- a/x86_64-w64-mingw32/lib/libcmpbk32.a
+++ b/x86_64-w64-mingw32/lib/libcmpbk32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmprops.a b/x86_64-w64-mingw32/lib/libcmprops.a
index b0c3361..b9b5440 100644
--- a/x86_64-w64-mingw32/lib/libcmprops.a
+++ b/x86_64-w64-mingw32/lib/libcmprops.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmsetacl.a b/x86_64-w64-mingw32/lib/libcmsetacl.a
index fc9d044..f7a2cbb 100644
--- a/x86_64-w64-mingw32/lib/libcmsetacl.a
+++ b/x86_64-w64-mingw32/lib/libcmsetacl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcmutil.a b/x86_64-w64-mingw32/lib/libcmutil.a
index aaaa5db..40e23d3 100644
--- a/x86_64-w64-mingw32/lib/libcmutil.a
+++ b/x86_64-w64-mingw32/lib/libcmutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcnbjmon.a b/x86_64-w64-mingw32/lib/libcnbjmon.a
index 576039c..5444c4f 100644
--- a/x86_64-w64-mingw32/lib/libcnbjmon.a
+++ b/x86_64-w64-mingw32/lib/libcnbjmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcnetcfg.a b/x86_64-w64-mingw32/lib/libcnetcfg.a
index 36463d8..d7576c6 100644
--- a/x86_64-w64-mingw32/lib/libcnetcfg.a
+++ b/x86_64-w64-mingw32/lib/libcnetcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcnvfat.a b/x86_64-w64-mingw32/lib/libcnvfat.a
index 260be26..50ec339 100644
--- a/x86_64-w64-mingw32/lib/libcnvfat.a
+++ b/x86_64-w64-mingw32/lib/libcnvfat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcoadmin.a b/x86_64-w64-mingw32/lib/libcoadmin.a
index 2097f46..dd96b54 100644
--- a/x86_64-w64-mingw32/lib/libcoadmin.a
+++ b/x86_64-w64-mingw32/lib/libcoadmin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcolbact.a b/x86_64-w64-mingw32/lib/libcolbact.a
index e68c20c..0fef13e 100644
--- a/x86_64-w64-mingw32/lib/libcolbact.a
+++ b/x86_64-w64-mingw32/lib/libcolbact.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomaddin.a b/x86_64-w64-mingw32/lib/libcomaddin.a
index ed967c0..7ac5ff0 100644
--- a/x86_64-w64-mingw32/lib/libcomaddin.a
+++ b/x86_64-w64-mingw32/lib/libcomaddin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomadmin.a b/x86_64-w64-mingw32/lib/libcomadmin.a
index a146edd..568cce1 100644
--- a/x86_64-w64-mingw32/lib/libcomadmin.a
+++ b/x86_64-w64-mingw32/lib/libcomadmin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomcat.a b/x86_64-w64-mingw32/lib/libcomcat.a
index 88d5694..34f9500 100644
--- a/x86_64-w64-mingw32/lib/libcomcat.a
+++ b/x86_64-w64-mingw32/lib/libcomcat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomctl32.a b/x86_64-w64-mingw32/lib/libcomctl32.a
index a4551ef..c9ab445 100644
--- a/x86_64-w64-mingw32/lib/libcomctl32.a
+++ b/x86_64-w64-mingw32/lib/libcomctl32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomdlg32.a b/x86_64-w64-mingw32/lib/libcomdlg32.a
index 8be8c80..a9c983b 100644
--- a/x86_64-w64-mingw32/lib/libcomdlg32.a
+++ b/x86_64-w64-mingw32/lib/libcomdlg32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcompatui.a b/x86_64-w64-mingw32/lib/libcompatui.a
index ebc01f1..ddba7ae 100644
--- a/x86_64-w64-mingw32/lib/libcompatui.a
+++ b/x86_64-w64-mingw32/lib/libcompatui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcompstui.a b/x86_64-w64-mingw32/lib/libcompstui.a
index 1eaa969..282e61e 100644
--- a/x86_64-w64-mingw32/lib/libcompstui.a
+++ b/x86_64-w64-mingw32/lib/libcompstui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomrepl.a b/x86_64-w64-mingw32/lib/libcomrepl.a
index f29c3ac..09ee368 100644
--- a/x86_64-w64-mingw32/lib/libcomrepl.a
+++ b/x86_64-w64-mingw32/lib/libcomrepl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomres.a b/x86_64-w64-mingw32/lib/libcomres.a
index 3e74947..59acb0e 100644
--- a/x86_64-w64-mingw32/lib/libcomres.a
+++ b/x86_64-w64-mingw32/lib/libcomres.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomsetup.a b/x86_64-w64-mingw32/lib/libcomsetup.a
index 2aee2b2..2822022 100644
--- a/x86_64-w64-mingw32/lib/libcomsetup.a
+++ b/x86_64-w64-mingw32/lib/libcomsetup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomsnap.a b/x86_64-w64-mingw32/lib/libcomsnap.a
index efb6dea..24f3e8a 100644
--- a/x86_64-w64-mingw32/lib/libcomsnap.a
+++ b/x86_64-w64-mingw32/lib/libcomsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomsvcs.a b/x86_64-w64-mingw32/lib/libcomsvcs.a
index 1daa099..2120fde 100644
--- a/x86_64-w64-mingw32/lib/libcomsvcs.a
+++ b/x86_64-w64-mingw32/lib/libcomsvcs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcomuid.a b/x86_64-w64-mingw32/lib/libcomuid.a
index 6ada056..82dc54d 100644
--- a/x86_64-w64-mingw32/lib/libcomuid.a
+++ b/x86_64-w64-mingw32/lib/libcomuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libconfmsp.a b/x86_64-w64-mingw32/lib/libconfmsp.a
index 0413163..ac5c41d 100644
--- a/x86_64-w64-mingw32/lib/libconfmsp.a
+++ b/x86_64-w64-mingw32/lib/libconfmsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libconnect.a b/x86_64-w64-mingw32/lib/libconnect.a
index 3bc2ace..5ea9ec9 100644
--- a/x86_64-w64-mingw32/lib/libconnect.a
+++ b/x86_64-w64-mingw32/lib/libconnect.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libconsole.a b/x86_64-w64-mingw32/lib/libconsole.a
index 26181fb..5c0426e 100644
--- a/x86_64-w64-mingw32/lib/libconsole.a
+++ b/x86_64-w64-mingw32/lib/libconsole.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcontrot.a b/x86_64-w64-mingw32/lib/libcontrot.a
index 5d61442..8ffcef0 100644
--- a/x86_64-w64-mingw32/lib/libcontrot.a
+++ b/x86_64-w64-mingw32/lib/libcontrot.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcorpol.a b/x86_64-w64-mingw32/lib/libcorpol.a
index 693a277..a5d15fb 100644
--- a/x86_64-w64-mingw32/lib/libcorpol.a
+++ b/x86_64-w64-mingw32/lib/libcorpol.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcredui.a b/x86_64-w64-mingw32/lib/libcredui.a
index c0d2d4e..a62c259 100644
--- a/x86_64-w64-mingw32/lib/libcredui.a
+++ b/x86_64-w64-mingw32/lib/libcredui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcrtdll.a b/x86_64-w64-mingw32/lib/libcrtdll.a
index ae47d94..8eea75d 100644
--- a/x86_64-w64-mingw32/lib/libcrtdll.a
+++ b/x86_64-w64-mingw32/lib/libcrtdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcrypt32.a b/x86_64-w64-mingw32/lib/libcrypt32.a
index 8df5e06..9818a27 100644
--- a/x86_64-w64-mingw32/lib/libcrypt32.a
+++ b/x86_64-w64-mingw32/lib/libcrypt32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptdlg.a b/x86_64-w64-mingw32/lib/libcryptdlg.a
index ff61e83..0cdb45d 100644
--- a/x86_64-w64-mingw32/lib/libcryptdlg.a
+++ b/x86_64-w64-mingw32/lib/libcryptdlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptdll.a b/x86_64-w64-mingw32/lib/libcryptdll.a
index 555eba7..e7f038d 100644
--- a/x86_64-w64-mingw32/lib/libcryptdll.a
+++ b/x86_64-w64-mingw32/lib/libcryptdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptext.a b/x86_64-w64-mingw32/lib/libcryptext.a
index 5b445a4..60680af 100644
--- a/x86_64-w64-mingw32/lib/libcryptext.a
+++ b/x86_64-w64-mingw32/lib/libcryptext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptnet.a b/x86_64-w64-mingw32/lib/libcryptnet.a
index 63ed787..9ebc6de 100644
--- a/x86_64-w64-mingw32/lib/libcryptnet.a
+++ b/x86_64-w64-mingw32/lib/libcryptnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptsp.a b/x86_64-w64-mingw32/lib/libcryptsp.a
index 63a7cf4..aed9fb2 100644
--- a/x86_64-w64-mingw32/lib/libcryptsp.a
+++ b/x86_64-w64-mingw32/lib/libcryptsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptsvc.a b/x86_64-w64-mingw32/lib/libcryptsvc.a
index 84d098d..5aff5be 100644
--- a/x86_64-w64-mingw32/lib/libcryptsvc.a
+++ b/x86_64-w64-mingw32/lib/libcryptsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptui.a b/x86_64-w64-mingw32/lib/libcryptui.a
index 06ff379..0c4e369 100644
--- a/x86_64-w64-mingw32/lib/libcryptui.a
+++ b/x86_64-w64-mingw32/lib/libcryptui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcryptxml.a b/x86_64-w64-mingw32/lib/libcryptxml.a
index 777bbf1..9ca0cbc 100644
--- a/x86_64-w64-mingw32/lib/libcryptxml.a
+++ b/x86_64-w64-mingw32/lib/libcryptxml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcscapi.a b/x86_64-w64-mingw32/lib/libcscapi.a
index 256204f..460f6aa 100644
--- a/x86_64-w64-mingw32/lib/libcscapi.a
+++ b/x86_64-w64-mingw32/lib/libcscapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcscdll.a b/x86_64-w64-mingw32/lib/libcscdll.a
index 2067b04..655a4bd 100644
--- a/x86_64-w64-mingw32/lib/libcscdll.a
+++ b/x86_64-w64-mingw32/lib/libcscdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcscui.a b/x86_64-w64-mingw32/lib/libcscui.a
index 6450e5c..8660ac0 100644
--- a/x86_64-w64-mingw32/lib/libcscui.a
+++ b/x86_64-w64-mingw32/lib/libcscui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libcsrsrv.a b/x86_64-w64-mingw32/lib/libcsrsrv.a
index 582b3a2..6403430 100644
--- a/x86_64-w64-mingw32/lib/libcsrsrv.a
+++ b/x86_64-w64-mingw32/lib/libcsrsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd2d1.a b/x86_64-w64-mingw32/lib/libd2d1.a
index 08e8b65..8a8531d 100644
--- a/x86_64-w64-mingw32/lib/libd2d1.a
+++ b/x86_64-w64-mingw32/lib/libd2d1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3d11.a b/x86_64-w64-mingw32/lib/libd3d11.a
index 4399931..c6f7015 100644
--- a/x86_64-w64-mingw32/lib/libd3d11.a
+++ b/x86_64-w64-mingw32/lib/libd3d11.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3d8thk.a b/x86_64-w64-mingw32/lib/libd3d8thk.a
index 48a7abc..a60c451 100644
--- a/x86_64-w64-mingw32/lib/libd3d8thk.a
+++ b/x86_64-w64-mingw32/lib/libd3d8thk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3d9.a b/x86_64-w64-mingw32/lib/libd3d9.a
index 2194830..448bdc8 100644
--- a/x86_64-w64-mingw32/lib/libd3d9.a
+++ b/x86_64-w64-mingw32/lib/libd3d9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler.a b/x86_64-w64-mingw32/lib/libd3dcompiler.a
index 5b76e4e..86c6504 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_33.a b/x86_64-w64-mingw32/lib/libd3dcompiler_33.a
index 625eb5f..c50b95b 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_33.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_34.a b/x86_64-w64-mingw32/lib/libd3dcompiler_34.a
index 5846c83..c4ce8ad 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_34.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_35.a b/x86_64-w64-mingw32/lib/libd3dcompiler_35.a
index 72aba80..f84e00b 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_35.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_36.a b/x86_64-w64-mingw32/lib/libd3dcompiler_36.a
index b6fb927..4e66800 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_36.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_37.a b/x86_64-w64-mingw32/lib/libd3dcompiler_37.a
index b4843aa..1739c06 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_37.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_38.a b/x86_64-w64-mingw32/lib/libd3dcompiler_38.a
index fa135cc..d6feab4 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_38.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_39.a b/x86_64-w64-mingw32/lib/libd3dcompiler_39.a
index 10bf1fc..7a733f9 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_39.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_40.a b/x86_64-w64-mingw32/lib/libd3dcompiler_40.a
index c25ba9a..e9a0f53 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_40.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_41.a b/x86_64-w64-mingw32/lib/libd3dcompiler_41.a
index 45aae95..25a4914 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_41.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_42.a b/x86_64-w64-mingw32/lib/libd3dcompiler_42.a
index a9c50da..895e115 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_42.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_43.a b/x86_64-w64-mingw32/lib/libd3dcompiler_43.a
index e322994..76c3eea 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_43.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_46.a b/x86_64-w64-mingw32/lib/libd3dcompiler_46.a
index d8fed6c..a3518f5 100644
--- a/x86_64-w64-mingw32/lib/libd3dcompiler_46.a
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_46.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcompiler_47.a b/x86_64-w64-mingw32/lib/libd3dcompiler_47.a
new file mode 100644
index 0000000..80fb7ec
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/libd3dcompiler_47.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcsx_46.a b/x86_64-w64-mingw32/lib/libd3dcsx_46.a
index 9242fdf..1768aab 100644
--- a/x86_64-w64-mingw32/lib/libd3dcsx_46.a
+++ b/x86_64-w64-mingw32/lib/libd3dcsx_46.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcsxd.a b/x86_64-w64-mingw32/lib/libd3dcsxd.a
index 6f1fda1..21858bd 100644
--- a/x86_64-w64-mingw32/lib/libd3dcsxd.a
+++ b/x86_64-w64-mingw32/lib/libd3dcsxd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dcsxd_43.a b/x86_64-w64-mingw32/lib/libd3dcsxd_43.a
index be8ea86..c8132ab 100644
--- a/x86_64-w64-mingw32/lib/libd3dcsxd_43.a
+++ b/x86_64-w64-mingw32/lib/libd3dcsxd_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10.a b/x86_64-w64-mingw32/lib/libd3dx10.a
index a35cd9d..906bea9 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_33.a b/x86_64-w64-mingw32/lib/libd3dx10_33.a
index 6038f5d..c80b1e4 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_33.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_34.a b/x86_64-w64-mingw32/lib/libd3dx10_34.a
index 6c98b7b..2e0b5d4 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_34.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_35.a b/x86_64-w64-mingw32/lib/libd3dx10_35.a
index 2d864d8..1f05131 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_35.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_36.a b/x86_64-w64-mingw32/lib/libd3dx10_36.a
index 7080bd1..82bf21b 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_36.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_37.a b/x86_64-w64-mingw32/lib/libd3dx10_37.a
index ac74275..642f8b2 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_37.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_38.a b/x86_64-w64-mingw32/lib/libd3dx10_38.a
index beb3464..1c190ee 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_38.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_39.a b/x86_64-w64-mingw32/lib/libd3dx10_39.a
index 9f41fbf..1fed4d6 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_39.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_40.a b/x86_64-w64-mingw32/lib/libd3dx10_40.a
index 2079b87..1ed4e9c 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_40.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_41.a b/x86_64-w64-mingw32/lib/libd3dx10_41.a
index 52fea3e..59241b8 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_41.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_42.a b/x86_64-w64-mingw32/lib/libd3dx10_42.a
index 4ea37d3..c7497ed 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_42.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx10_43.a b/x86_64-w64-mingw32/lib/libd3dx10_43.a
index c35a06a..cac6308 100644
--- a/x86_64-w64-mingw32/lib/libd3dx10_43.a
+++ b/x86_64-w64-mingw32/lib/libd3dx10_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx11.a b/x86_64-w64-mingw32/lib/libd3dx11.a
index 2a5ea24..2594195 100644
--- a/x86_64-w64-mingw32/lib/libd3dx11.a
+++ b/x86_64-w64-mingw32/lib/libd3dx11.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx11_42.a b/x86_64-w64-mingw32/lib/libd3dx11_42.a
index 53615af..035ed91 100644
--- a/x86_64-w64-mingw32/lib/libd3dx11_42.a
+++ b/x86_64-w64-mingw32/lib/libd3dx11_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx11_43.a b/x86_64-w64-mingw32/lib/libd3dx11_43.a
index d7633f7..783bc02 100644
--- a/x86_64-w64-mingw32/lib/libd3dx11_43.a
+++ b/x86_64-w64-mingw32/lib/libd3dx11_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9.a b/x86_64-w64-mingw32/lib/libd3dx9.a
index 15ac89c..fd92388 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_24.a b/x86_64-w64-mingw32/lib/libd3dx9_24.a
index 8e21b19..e2be013 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_24.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_24.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_25.a b/x86_64-w64-mingw32/lib/libd3dx9_25.a
index 7e6e173..50cf243 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_25.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_25.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_26.a b/x86_64-w64-mingw32/lib/libd3dx9_26.a
index 55cff60..77c5520 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_26.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_26.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_27.a b/x86_64-w64-mingw32/lib/libd3dx9_27.a
index 6ce6872..b275b6c 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_27.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_27.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_28.a b/x86_64-w64-mingw32/lib/libd3dx9_28.a
index e129894..53375c2 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_28.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_28.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_29.a b/x86_64-w64-mingw32/lib/libd3dx9_29.a
index f394886..6dd4252 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_29.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_29.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_30.a b/x86_64-w64-mingw32/lib/libd3dx9_30.a
index 38fe3e0..9c46965 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_30.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_30.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_31.a b/x86_64-w64-mingw32/lib/libd3dx9_31.a
index 7de515a..e070be2 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_31.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_31.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_32.a b/x86_64-w64-mingw32/lib/libd3dx9_32.a
index 37189cb..60f0f00 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_32.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_33.a b/x86_64-w64-mingw32/lib/libd3dx9_33.a
index 706e42c..75ed597 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_33.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_34.a b/x86_64-w64-mingw32/lib/libd3dx9_34.a
index 3064762..484100a 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_34.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_35.a b/x86_64-w64-mingw32/lib/libd3dx9_35.a
index 4733757..0a66b6c 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_35.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_36.a b/x86_64-w64-mingw32/lib/libd3dx9_36.a
index 7f10b27..38a6481 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_36.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_37.a b/x86_64-w64-mingw32/lib/libd3dx9_37.a
index 88c1ce1..1e88dee 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_37.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_38.a b/x86_64-w64-mingw32/lib/libd3dx9_38.a
index a3bcabe..a717af4 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_38.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_39.a b/x86_64-w64-mingw32/lib/libd3dx9_39.a
index 20489cc..aaf4bba 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_39.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_40.a b/x86_64-w64-mingw32/lib/libd3dx9_40.a
index 9df298d..2cc299e 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_40.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_41.a b/x86_64-w64-mingw32/lib/libd3dx9_41.a
index c26c72c..977a3b4 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_41.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_42.a b/x86_64-w64-mingw32/lib/libd3dx9_42.a
index 3eb63d8..5f5b70f 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_42.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dx9_43.a b/x86_64-w64-mingw32/lib/libd3dx9_43.a
index 8f06529..2e5dd01 100644
--- a/x86_64-w64-mingw32/lib/libd3dx9_43.a
+++ b/x86_64-w64-mingw32/lib/libd3dx9_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libd3dxof.a b/x86_64-w64-mingw32/lib/libd3dxof.a
index fb65b94..520f30f 100644
--- a/x86_64-w64-mingw32/lib/libd3dxof.a
+++ b/x86_64-w64-mingw32/lib/libd3dxof.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdanim.a b/x86_64-w64-mingw32/lib/libdanim.a
index f2413e5..284c89e 100644
--- a/x86_64-w64-mingw32/lib/libdanim.a
+++ b/x86_64-w64-mingw32/lib/libdanim.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdataclen.a b/x86_64-w64-mingw32/lib/libdataclen.a
index 5651279..adff8e5 100644
--- a/x86_64-w64-mingw32/lib/libdataclen.a
+++ b/x86_64-w64-mingw32/lib/libdataclen.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdatime.a b/x86_64-w64-mingw32/lib/libdatime.a
index d132ce8..14f3624 100644
--- a/x86_64-w64-mingw32/lib/libdatime.a
+++ b/x86_64-w64-mingw32/lib/libdatime.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdavclnt.a b/x86_64-w64-mingw32/lib/libdavclnt.a
index 7cfe192..48280d1 100644
--- a/x86_64-w64-mingw32/lib/libdavclnt.a
+++ b/x86_64-w64-mingw32/lib/libdavclnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdavcprox.a b/x86_64-w64-mingw32/lib/libdavcprox.a
index 828b401..ef2d6db 100644
--- a/x86_64-w64-mingw32/lib/libdavcprox.a
+++ b/x86_64-w64-mingw32/lib/libdavcprox.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdbgeng.a b/x86_64-w64-mingw32/lib/libdbgeng.a
index 5d156a9..6a4e98e 100644
--- a/x86_64-w64-mingw32/lib/libdbgeng.a
+++ b/x86_64-w64-mingw32/lib/libdbgeng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdbghelp.a b/x86_64-w64-mingw32/lib/libdbghelp.a
index 6d51538..b0af495 100644
--- a/x86_64-w64-mingw32/lib/libdbghelp.a
+++ b/x86_64-w64-mingw32/lib/libdbghelp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdbnetlib.a b/x86_64-w64-mingw32/lib/libdbnetlib.a
index 54edee8..e6d356c 100644
--- a/x86_64-w64-mingw32/lib/libdbnetlib.a
+++ b/x86_64-w64-mingw32/lib/libdbnetlib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdbnmpntw.a b/x86_64-w64-mingw32/lib/libdbnmpntw.a
index 8a44e50..71b37f9 100644
--- a/x86_64-w64-mingw32/lib/libdbnmpntw.a
+++ b/x86_64-w64-mingw32/lib/libdbnmpntw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdciman32.a b/x86_64-w64-mingw32/lib/libdciman32.a
index fc1ee1f..b36c0e8 100644
--- a/x86_64-w64-mingw32/lib/libdciman32.a
+++ b/x86_64-w64-mingw32/lib/libdciman32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libddraw.a b/x86_64-w64-mingw32/lib/libddraw.a
index b52bd84..3d6f230 100644
--- a/x86_64-w64-mingw32/lib/libddraw.a
+++ b/x86_64-w64-mingw32/lib/libddraw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libddrawex.a b/x86_64-w64-mingw32/lib/libddrawex.a
index 26cece4..27e1671 100644
--- a/x86_64-w64-mingw32/lib/libddrawex.a
+++ b/x86_64-w64-mingw32/lib/libddrawex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdeskadp.a b/x86_64-w64-mingw32/lib/libdeskadp.a
index de72571..0343501 100644
--- a/x86_64-w64-mingw32/lib/libdeskadp.a
+++ b/x86_64-w64-mingw32/lib/libdeskadp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdeskmon.a b/x86_64-w64-mingw32/lib/libdeskmon.a
index ed2ee66..c61f2d7 100644
--- a/x86_64-w64-mingw32/lib/libdeskmon.a
+++ b/x86_64-w64-mingw32/lib/libdeskmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdeskperf.a b/x86_64-w64-mingw32/lib/libdeskperf.a
index 125a898..2a7c5a0 100644
--- a/x86_64-w64-mingw32/lib/libdeskperf.a
+++ b/x86_64-w64-mingw32/lib/libdeskperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdevenum.a b/x86_64-w64-mingw32/lib/libdevenum.a
index ff0b8bf..18fe9fb 100644
--- a/x86_64-w64-mingw32/lib/libdevenum.a
+++ b/x86_64-w64-mingw32/lib/libdevenum.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdevmgr.a b/x86_64-w64-mingw32/lib/libdevmgr.a
index 7f56c1c..ccc5856 100644
--- a/x86_64-w64-mingw32/lib/libdevmgr.a
+++ b/x86_64-w64-mingw32/lib/libdevmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdevobj.a b/x86_64-w64-mingw32/lib/libdevobj.a
index 6cae593..3c391c0 100644
--- a/x86_64-w64-mingw32/lib/libdevobj.a
+++ b/x86_64-w64-mingw32/lib/libdevobj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdevrtl.a b/x86_64-w64-mingw32/lib/libdevrtl.a
index 21e9a15..561d0ea 100644
--- a/x86_64-w64-mingw32/lib/libdevrtl.a
+++ b/x86_64-w64-mingw32/lib/libdevrtl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdfrgifps.a b/x86_64-w64-mingw32/lib/libdfrgifps.a
index 41001e2..6e007e7 100644
--- a/x86_64-w64-mingw32/lib/libdfrgifps.a
+++ b/x86_64-w64-mingw32/lib/libdfrgifps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdfrgsnap.a b/x86_64-w64-mingw32/lib/libdfrgsnap.a
index 1434eab..6cdc63c 100644
--- a/x86_64-w64-mingw32/lib/libdfrgsnap.a
+++ b/x86_64-w64-mingw32/lib/libdfrgsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdfrgui.a b/x86_64-w64-mingw32/lib/libdfrgui.a
index fb02221..ad315c5 100644
--- a/x86_64-w64-mingw32/lib/libdfrgui.a
+++ b/x86_64-w64-mingw32/lib/libdfrgui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdfsshlex.a b/x86_64-w64-mingw32/lib/libdfsshlex.a
index cb53ba3..36e2c63 100644
--- a/x86_64-w64-mingw32/lib/libdfsshlex.a
+++ b/x86_64-w64-mingw32/lib/libdfsshlex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdgnet.a b/x86_64-w64-mingw32/lib/libdgnet.a
index a8af2c0..0c0dbef 100644
--- a/x86_64-w64-mingw32/lib/libdgnet.a
+++ b/x86_64-w64-mingw32/lib/libdgnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdhcpcsvc.a b/x86_64-w64-mingw32/lib/libdhcpcsvc.a
index d3bea71..5e4e0ad 100644
--- a/x86_64-w64-mingw32/lib/libdhcpcsvc.a
+++ b/x86_64-w64-mingw32/lib/libdhcpcsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdhcpcsvc6.a b/x86_64-w64-mingw32/lib/libdhcpcsvc6.a
index 07e7ea0..5bcfd4e 100644
--- a/x86_64-w64-mingw32/lib/libdhcpcsvc6.a
+++ b/x86_64-w64-mingw32/lib/libdhcpcsvc6.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdhcpmon.a b/x86_64-w64-mingw32/lib/libdhcpmon.a
index 23690c8..a9179e7 100644
--- a/x86_64-w64-mingw32/lib/libdhcpmon.a
+++ b/x86_64-w64-mingw32/lib/libdhcpmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdhcpsapi.a b/x86_64-w64-mingw32/lib/libdhcpsapi.a
index 49e6ee6..11eedd7 100644
--- a/x86_64-w64-mingw32/lib/libdhcpsapi.a
+++ b/x86_64-w64-mingw32/lib/libdhcpsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdiactfrm.a b/x86_64-w64-mingw32/lib/libdiactfrm.a
index 5c8e789..f657db3 100644
--- a/x86_64-w64-mingw32/lib/libdiactfrm.a
+++ b/x86_64-w64-mingw32/lib/libdiactfrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdigest.a b/x86_64-w64-mingw32/lib/libdigest.a
index 23a153a..08bc6f2 100644
--- a/x86_64-w64-mingw32/lib/libdigest.a
+++ b/x86_64-w64-mingw32/lib/libdigest.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdimap.a b/x86_64-w64-mingw32/lib/libdimap.a
index ad1e52f..d22aaed 100644
--- a/x86_64-w64-mingw32/lib/libdimap.a
+++ b/x86_64-w64-mingw32/lib/libdimap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdimsntfy.a b/x86_64-w64-mingw32/lib/libdimsntfy.a
index b9f1499..9b12303 100644
--- a/x86_64-w64-mingw32/lib/libdimsntfy.a
+++ b/x86_64-w64-mingw32/lib/libdimsntfy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdimsroam.a b/x86_64-w64-mingw32/lib/libdimsroam.a
index 5975190..d4886d8 100644
--- a/x86_64-w64-mingw32/lib/libdimsroam.a
+++ b/x86_64-w64-mingw32/lib/libdimsroam.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdinput.a b/x86_64-w64-mingw32/lib/libdinput.a
index df61535..76d97dd 100644
--- a/x86_64-w64-mingw32/lib/libdinput.a
+++ b/x86_64-w64-mingw32/lib/libdinput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdinput8.a b/x86_64-w64-mingw32/lib/libdinput8.a
index 83f23d0..611d400 100644
--- a/x86_64-w64-mingw32/lib/libdinput8.a
+++ b/x86_64-w64-mingw32/lib/libdinput8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdirectdb.a b/x86_64-w64-mingw32/lib/libdirectdb.a
index ece9493..83b89b7 100644
--- a/x86_64-w64-mingw32/lib/libdirectdb.a
+++ b/x86_64-w64-mingw32/lib/libdirectdb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdiskcopy.a b/x86_64-w64-mingw32/lib/libdiskcopy.a
index 2331fcb..99e71b2 100644
--- a/x86_64-w64-mingw32/lib/libdiskcopy.a
+++ b/x86_64-w64-mingw32/lib/libdiskcopy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdispex.a b/x86_64-w64-mingw32/lib/libdispex.a
index ea597ee..6f6f348 100644
--- a/x86_64-w64-mingw32/lib/libdispex.a
+++ b/x86_64-w64-mingw32/lib/libdispex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmconfig.a b/x86_64-w64-mingw32/lib/libdmconfig.a
index 14906bf..fe7a885 100644
--- a/x86_64-w64-mingw32/lib/libdmconfig.a
+++ b/x86_64-w64-mingw32/lib/libdmconfig.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmdlgs.a b/x86_64-w64-mingw32/lib/libdmdlgs.a
index 996c5b3..dd3016c 100644
--- a/x86_64-w64-mingw32/lib/libdmdlgs.a
+++ b/x86_64-w64-mingw32/lib/libdmdlgs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmdskmgr.a b/x86_64-w64-mingw32/lib/libdmdskmgr.a
index a265c5c..6c4af7d 100644
--- a/x86_64-w64-mingw32/lib/libdmdskmgr.a
+++ b/x86_64-w64-mingw32/lib/libdmdskmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmintf.a b/x86_64-w64-mingw32/lib/libdmintf.a
index f8b5c20..1d0af49 100644
--- a/x86_64-w64-mingw32/lib/libdmintf.a
+++ b/x86_64-w64-mingw32/lib/libdmintf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmivcitf.a b/x86_64-w64-mingw32/lib/libdmivcitf.a
index cbc5a81..7f379d2 100644
--- a/x86_64-w64-mingw32/lib/libdmivcitf.a
+++ b/x86_64-w64-mingw32/lib/libdmivcitf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmocx.a b/x86_64-w64-mingw32/lib/libdmocx.a
index 00108e5..a34a58a 100644
--- a/x86_64-w64-mingw32/lib/libdmocx.a
+++ b/x86_64-w64-mingw32/lib/libdmocx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmoguids.a b/x86_64-w64-mingw32/lib/libdmoguids.a
index 85a3abb..e604df2 100644
--- a/x86_64-w64-mingw32/lib/libdmoguids.a
+++ b/x86_64-w64-mingw32/lib/libdmoguids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmserver.a b/x86_64-w64-mingw32/lib/libdmserver.a
index e5dbbaf..dc227b8 100644
--- a/x86_64-w64-mingw32/lib/libdmserver.a
+++ b/x86_64-w64-mingw32/lib/libdmserver.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmutil.a b/x86_64-w64-mingw32/lib/libdmutil.a
index e7e27a2..03bd615 100644
--- a/x86_64-w64-mingw32/lib/libdmutil.a
+++ b/x86_64-w64-mingw32/lib/libdmutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdmvdsitf.a b/x86_64-w64-mingw32/lib/libdmvdsitf.a
index 140d0fa..a3dcc28 100644
--- a/x86_64-w64-mingw32/lib/libdmvdsitf.a
+++ b/x86_64-w64-mingw32/lib/libdmvdsitf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdnsapi.a b/x86_64-w64-mingw32/lib/libdnsapi.a
index 4bc996d..c8fadf8 100644
--- a/x86_64-w64-mingw32/lib/libdnsapi.a
+++ b/x86_64-w64-mingw32/lib/libdnsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdnsrslvr.a b/x86_64-w64-mingw32/lib/libdnsrslvr.a
index 974e239..3abaa1c 100644
--- a/x86_64-w64-mingw32/lib/libdnsrslvr.a
+++ b/x86_64-w64-mingw32/lib/libdnsrslvr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdocprop.a b/x86_64-w64-mingw32/lib/libdocprop.a
index 9768b8c..ec52967 100644
--- a/x86_64-w64-mingw32/lib/libdocprop.a
+++ b/x86_64-w64-mingw32/lib/libdocprop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdocprop2.a b/x86_64-w64-mingw32/lib/libdocprop2.a
index d4d00fe..28a10ec 100644
--- a/x86_64-w64-mingw32/lib/libdocprop2.a
+++ b/x86_64-w64-mingw32/lib/libdocprop2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpnaddr.a b/x86_64-w64-mingw32/lib/libdpnaddr.a
index 7c1c692..f5baa09 100644
--- a/x86_64-w64-mingw32/lib/libdpnaddr.a
+++ b/x86_64-w64-mingw32/lib/libdpnaddr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpnet.a b/x86_64-w64-mingw32/lib/libdpnet.a
index afab57a..95b5887 100644
--- a/x86_64-w64-mingw32/lib/libdpnet.a
+++ b/x86_64-w64-mingw32/lib/libdpnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpnhpast.a b/x86_64-w64-mingw32/lib/libdpnhpast.a
index 0a46829..930f3ce 100644
--- a/x86_64-w64-mingw32/lib/libdpnhpast.a
+++ b/x86_64-w64-mingw32/lib/libdpnhpast.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpnhupnp.a b/x86_64-w64-mingw32/lib/libdpnhupnp.a
index c0c354c..6988312 100644
--- a/x86_64-w64-mingw32/lib/libdpnhupnp.a
+++ b/x86_64-w64-mingw32/lib/libdpnhupnp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpnlobby.a b/x86_64-w64-mingw32/lib/libdpnlobby.a
index 55f4180..9ce5887 100644
--- a/x86_64-w64-mingw32/lib/libdpnlobby.a
+++ b/x86_64-w64-mingw32/lib/libdpnlobby.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpvacm.a b/x86_64-w64-mingw32/lib/libdpvacm.a
index 4390f18..7658710 100644
--- a/x86_64-w64-mingw32/lib/libdpvacm.a
+++ b/x86_64-w64-mingw32/lib/libdpvacm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpvoice.a b/x86_64-w64-mingw32/lib/libdpvoice.a
index 5b8ecf5..314c80c 100644
--- a/x86_64-w64-mingw32/lib/libdpvoice.a
+++ b/x86_64-w64-mingw32/lib/libdpvoice.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdpvvox.a b/x86_64-w64-mingw32/lib/libdpvvox.a
index 322c07e..9babb3d 100644
--- a/x86_64-w64-mingw32/lib/libdpvvox.a
+++ b/x86_64-w64-mingw32/lib/libdpvvox.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdrprov.a b/x86_64-w64-mingw32/lib/libdrprov.a
index 4417bcf..0114039 100644
--- a/x86_64-w64-mingw32/lib/libdrprov.a
+++ b/x86_64-w64-mingw32/lib/libdrprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libds32gt.a b/x86_64-w64-mingw32/lib/libds32gt.a
index d87ef9a..54119e2 100644
--- a/x86_64-w64-mingw32/lib/libds32gt.a
+++ b/x86_64-w64-mingw32/lib/libds32gt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsauth.a b/x86_64-w64-mingw32/lib/libdsauth.a
index 647f3f6..045bde5 100644
--- a/x86_64-w64-mingw32/lib/libdsauth.a
+++ b/x86_64-w64-mingw32/lib/libdsauth.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsdmo.a b/x86_64-w64-mingw32/lib/libdsdmo.a
index 7a05870..2e0732c 100644
--- a/x86_64-w64-mingw32/lib/libdsdmo.a
+++ b/x86_64-w64-mingw32/lib/libdsdmo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsdmoprp.a b/x86_64-w64-mingw32/lib/libdsdmoprp.a
index 6d9c87c..1ca3dbe 100644
--- a/x86_64-w64-mingw32/lib/libdsdmoprp.a
+++ b/x86_64-w64-mingw32/lib/libdsdmoprp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdskquota.a b/x86_64-w64-mingw32/lib/libdskquota.a
index a7e5d88..8d59bed 100644
--- a/x86_64-w64-mingw32/lib/libdskquota.a
+++ b/x86_64-w64-mingw32/lib/libdskquota.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdskquoui.a b/x86_64-w64-mingw32/lib/libdskquoui.a
index 56b59b1..c567ece 100644
--- a/x86_64-w64-mingw32/lib/libdskquoui.a
+++ b/x86_64-w64-mingw32/lib/libdskquoui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsound.a b/x86_64-w64-mingw32/lib/libdsound.a
index 0d94a53..b215423 100644
--- a/x86_64-w64-mingw32/lib/libdsound.a
+++ b/x86_64-w64-mingw32/lib/libdsound.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsound3d.a b/x86_64-w64-mingw32/lib/libdsound3d.a
index cf5dd8e..a6d1201 100644
--- a/x86_64-w64-mingw32/lib/libdsound3d.a
+++ b/x86_64-w64-mingw32/lib/libdsound3d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsprop.a b/x86_64-w64-mingw32/lib/libdsprop.a
index 2b4d48a..2cda57f 100644
--- a/x86_64-w64-mingw32/lib/libdsprop.a
+++ b/x86_64-w64-mingw32/lib/libdsprop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsprov.a b/x86_64-w64-mingw32/lib/libdsprov.a
index 7fa94f1..c606fa2 100644
--- a/x86_64-w64-mingw32/lib/libdsprov.a
+++ b/x86_64-w64-mingw32/lib/libdsprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsquery.a b/x86_64-w64-mingw32/lib/libdsquery.a
index 000b31e..9e76a1c 100644
--- a/x86_64-w64-mingw32/lib/libdsquery.a
+++ b/x86_64-w64-mingw32/lib/libdsquery.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdssec.a b/x86_64-w64-mingw32/lib/libdssec.a
index fa2b28b..a0b8a90 100644
--- a/x86_64-w64-mingw32/lib/libdssec.a
+++ b/x86_64-w64-mingw32/lib/libdssec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdssenh.a b/x86_64-w64-mingw32/lib/libdssenh.a
index e53f8fe..a58bb25 100644
--- a/x86_64-w64-mingw32/lib/libdssenh.a
+++ b/x86_64-w64-mingw32/lib/libdssenh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdsuiext.a b/x86_64-w64-mingw32/lib/libdsuiext.a
index adeb775..d2e0483 100644
--- a/x86_64-w64-mingw32/lib/libdsuiext.a
+++ b/x86_64-w64-mingw32/lib/libdsuiext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libduser.a b/x86_64-w64-mingw32/lib/libduser.a
index 45bb3eb..d636a94 100644
--- a/x86_64-w64-mingw32/lib/libduser.a
+++ b/x86_64-w64-mingw32/lib/libduser.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdwmapi.a b/x86_64-w64-mingw32/lib/libdwmapi.a
index 6cb8d93..76e80ed 100644
--- a/x86_64-w64-mingw32/lib/libdwmapi.a
+++ b/x86_64-w64-mingw32/lib/libdwmapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdwrite.a b/x86_64-w64-mingw32/lib/libdwrite.a
index e77511b..ba87f2e 100644
--- a/x86_64-w64-mingw32/lib/libdwrite.a
+++ b/x86_64-w64-mingw32/lib/libdwrite.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxdiagn.a b/x86_64-w64-mingw32/lib/libdxdiagn.a
index df0ace2..34246d6 100644
--- a/x86_64-w64-mingw32/lib/libdxdiagn.a
+++ b/x86_64-w64-mingw32/lib/libdxdiagn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxerr8.a b/x86_64-w64-mingw32/lib/libdxerr8.a
index 3f16023..c32e5e2 100644
--- a/x86_64-w64-mingw32/lib/libdxerr8.a
+++ b/x86_64-w64-mingw32/lib/libdxerr8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxerr9.a b/x86_64-w64-mingw32/lib/libdxerr9.a
index c160f85..69136c8 100644
--- a/x86_64-w64-mingw32/lib/libdxerr9.a
+++ b/x86_64-w64-mingw32/lib/libdxerr9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxgi.a b/x86_64-w64-mingw32/lib/libdxgi.a
index b35afb1..296f132 100644
--- a/x86_64-w64-mingw32/lib/libdxgi.a
+++ b/x86_64-w64-mingw32/lib/libdxgi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxguid.a b/x86_64-w64-mingw32/lib/libdxguid.a
index 9149a5d..14d5d6c 100644
--- a/x86_64-w64-mingw32/lib/libdxguid.a
+++ b/x86_64-w64-mingw32/lib/libdxguid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxtmsft.a b/x86_64-w64-mingw32/lib/libdxtmsft.a
index 23a57d2..4369260 100644
--- a/x86_64-w64-mingw32/lib/libdxtmsft.a
+++ b/x86_64-w64-mingw32/lib/libdxtmsft.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxtrans.a b/x86_64-w64-mingw32/lib/libdxtrans.a
index 69929ea..27bb7a1 100644
--- a/x86_64-w64-mingw32/lib/libdxtrans.a
+++ b/x86_64-w64-mingw32/lib/libdxtrans.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libdxva2.a b/x86_64-w64-mingw32/lib/libdxva2.a
index fd889f5..1688d52 100644
--- a/x86_64-w64-mingw32/lib/libdxva2.a
+++ b/x86_64-w64-mingw32/lib/libdxva2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeappcfg.a b/x86_64-w64-mingw32/lib/libeappcfg.a
index 13c5cae..616b745 100644
--- a/x86_64-w64-mingw32/lib/libeappcfg.a
+++ b/x86_64-w64-mingw32/lib/libeappcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeappgnui.a b/x86_64-w64-mingw32/lib/libeappgnui.a
index 6b20ff3..c0fb8c6 100644
--- a/x86_64-w64-mingw32/lib/libeappgnui.a
+++ b/x86_64-w64-mingw32/lib/libeappgnui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeapphost.a b/x86_64-w64-mingw32/lib/libeapphost.a
index bfa6f09..563cbf1 100644
--- a/x86_64-w64-mingw32/lib/libeapphost.a
+++ b/x86_64-w64-mingw32/lib/libeapphost.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeappprxy.a b/x86_64-w64-mingw32/lib/libeappprxy.a
index 9f12d03..08cbe77 100644
--- a/x86_64-w64-mingw32/lib/libeappprxy.a
+++ b/x86_64-w64-mingw32/lib/libeappprxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libefsadu.a b/x86_64-w64-mingw32/lib/libefsadu.a
index b7d73b4..38e46b5 100644
--- a/x86_64-w64-mingw32/lib/libefsadu.a
+++ b/x86_64-w64-mingw32/lib/libefsadu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libels.a b/x86_64-w64-mingw32/lib/libels.a
index b8e9d60..2a59da0 100644
--- a/x86_64-w64-mingw32/lib/libels.a
+++ b/x86_64-w64-mingw32/lib/libels.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libencapi.a b/x86_64-w64-mingw32/lib/libencapi.a
index 609e36b..f1b810a 100644
--- a/x86_64-w64-mingw32/lib/libencapi.a
+++ b/x86_64-w64-mingw32/lib/libencapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libersvc.a b/x86_64-w64-mingw32/lib/libersvc.a
index 343641e..18795a2 100644
--- a/x86_64-w64-mingw32/lib/libersvc.a
+++ b/x86_64-w64-mingw32/lib/libersvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libes.a b/x86_64-w64-mingw32/lib/libes.a
index cf7ab0c..61f7bc7 100644
--- a/x86_64-w64-mingw32/lib/libes.a
+++ b/x86_64-w64-mingw32/lib/libes.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libesent.a b/x86_64-w64-mingw32/lib/libesent.a
index 2196bff..c97fc54 100644
--- a/x86_64-w64-mingw32/lib/libesent.a
+++ b/x86_64-w64-mingw32/lib/libesent.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libesentprf.a b/x86_64-w64-mingw32/lib/libesentprf.a
index b167b92..dbacfdb 100644
--- a/x86_64-w64-mingw32/lib/libesentprf.a
+++ b/x86_64-w64-mingw32/lib/libesentprf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libesscli.a b/x86_64-w64-mingw32/lib/libesscli.a
index ea660a0..482216d 100644
--- a/x86_64-w64-mingw32/lib/libesscli.a
+++ b/x86_64-w64-mingw32/lib/libesscli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeventcls.a b/x86_64-w64-mingw32/lib/libeventcls.a
index 6a8fde9..1e90692 100644
--- a/x86_64-w64-mingw32/lib/libeventcls.a
+++ b/x86_64-w64-mingw32/lib/libeventcls.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libeventlog.a b/x86_64-w64-mingw32/lib/libeventlog.a
index 7bba41a..4d6d5ee 100644
--- a/x86_64-w64-mingw32/lib/libeventlog.a
+++ b/x86_64-w64-mingw32/lib/libeventlog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libevntagnt.a b/x86_64-w64-mingw32/lib/libevntagnt.a
index d9ef380..d69b1eb 100644
--- a/x86_64-w64-mingw32/lib/libevntagnt.a
+++ b/x86_64-w64-mingw32/lib/libevntagnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libevntrprv.a b/x86_64-w64-mingw32/lib/libevntrprv.a
index b214f50..a37f083 100644
--- a/x86_64-w64-mingw32/lib/libevntrprv.a
+++ b/x86_64-w64-mingw32/lib/libevntrprv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libevr.a b/x86_64-w64-mingw32/lib/libevr.a
index ab51437..e943084 100644
--- a/x86_64-w64-mingw32/lib/libevr.a
+++ b/x86_64-w64-mingw32/lib/libevr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libevtgprov.a b/x86_64-w64-mingw32/lib/libevtgprov.a
index f5366c6..848bda8 100644
--- a/x86_64-w64-mingw32/lib/libevtgprov.a
+++ b/x86_64-w64-mingw32/lib/libevtgprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libexstrace.a b/x86_64-w64-mingw32/lib/libexstrace.a
index f09eef1..c76dd4f 100644
--- a/x86_64-w64-mingw32/lib/libexstrace.a
+++ b/x86_64-w64-mingw32/lib/libexstrace.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libextmgr.a b/x86_64-w64-mingw32/lib/libextmgr.a
index 4423e41..f7207c5 100644
--- a/x86_64-w64-mingw32/lib/libextmgr.a
+++ b/x86_64-w64-mingw32/lib/libextmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libf3ahvoas.a b/x86_64-w64-mingw32/lib/libf3ahvoas.a
index 0cde92e..8886906 100644
--- a/x86_64-w64-mingw32/lib/libf3ahvoas.a
+++ b/x86_64-w64-mingw32/lib/libf3ahvoas.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfastprox.a b/x86_64-w64-mingw32/lib/libfastprox.a
index 908ff74..ac0e758 100644
--- a/x86_64-w64-mingw32/lib/libfastprox.a
+++ b/x86_64-w64-mingw32/lib/libfastprox.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfaultrep.a b/x86_64-w64-mingw32/lib/libfaultrep.a
index 7f679f3..cfe6315 100644
--- a/x86_64-w64-mingw32/lib/libfaultrep.a
+++ b/x86_64-w64-mingw32/lib/libfaultrep.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfcachdll.a b/x86_64-w64-mingw32/lib/libfcachdll.a
index 3a543ae..8220d4e 100644
--- a/x86_64-w64-mingw32/lib/libfcachdll.a
+++ b/x86_64-w64-mingw32/lib/libfcachdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfde.a b/x86_64-w64-mingw32/lib/libfde.a
index cc3e452..21894a6 100644
--- a/x86_64-w64-mingw32/lib/libfde.a
+++ b/x86_64-w64-mingw32/lib/libfde.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfdeploy.a b/x86_64-w64-mingw32/lib/libfdeploy.a
index 656688d..89b4c2f 100644
--- a/x86_64-w64-mingw32/lib/libfdeploy.a
+++ b/x86_64-w64-mingw32/lib/libfdeploy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfeclient.a b/x86_64-w64-mingw32/lib/libfeclient.a
index e890e49..f95861c 100644
--- a/x86_64-w64-mingw32/lib/libfeclient.a
+++ b/x86_64-w64-mingw32/lib/libfeclient.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfilemgmt.a b/x86_64-w64-mingw32/lib/libfilemgmt.a
index e9a9362..68650a3 100644
--- a/x86_64-w64-mingw32/lib/libfilemgmt.a
+++ b/x86_64-w64-mingw32/lib/libfilemgmt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfldrclnr.a b/x86_64-w64-mingw32/lib/libfldrclnr.a
index c2a6000..f6e9bf3 100644
--- a/x86_64-w64-mingw32/lib/libfldrclnr.a
+++ b/x86_64-w64-mingw32/lib/libfldrclnr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfltlib.a b/x86_64-w64-mingw32/lib/libfltlib.a
index ed73731..1d5c011 100644
--- a/x86_64-w64-mingw32/lib/libfltlib.a
+++ b/x86_64-w64-mingw32/lib/libfltlib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfmifs.a b/x86_64-w64-mingw32/lib/libfmifs.a
index bda07bc..a4b7431 100644
--- a/x86_64-w64-mingw32/lib/libfmifs.a
+++ b/x86_64-w64-mingw32/lib/libfmifs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfontext.a b/x86_64-w64-mingw32/lib/libfontext.a
index e34902b..cbb9a2b 100644
--- a/x86_64-w64-mingw32/lib/libfontext.a
+++ b/x86_64-w64-mingw32/lib/libfontext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfontsub.a b/x86_64-w64-mingw32/lib/libfontsub.a
index 10b194b..bf88af3 100644
--- a/x86_64-w64-mingw32/lib/libfontsub.a
+++ b/x86_64-w64-mingw32/lib/libfontsub.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libframedyn.a b/x86_64-w64-mingw32/lib/libframedyn.a
index 52a72c4..c9c29fb 100644
--- a/x86_64-w64-mingw32/lib/libframedyn.a
+++ b/x86_64-w64-mingw32/lib/libframedyn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfsusd.a b/x86_64-w64-mingw32/lib/libfsusd.a
index 5ed8721..60008eb 100644
--- a/x86_64-w64-mingw32/lib/libfsusd.a
+++ b/x86_64-w64-mingw32/lib/libfsusd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libftpctrs2.a b/x86_64-w64-mingw32/lib/libftpctrs2.a
index b1c9a78..d87faaa 100644
--- a/x86_64-w64-mingw32/lib/libftpctrs2.a
+++ b/x86_64-w64-mingw32/lib/libftpctrs2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libftpmib.a b/x86_64-w64-mingw32/lib/libftpmib.a
index a680b43..3eb7e21 100644
--- a/x86_64-w64-mingw32/lib/libftpmib.a
+++ b/x86_64-w64-mingw32/lib/libftpmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libftpsvc2.a b/x86_64-w64-mingw32/lib/libftpsvc2.a
index 307b65f..18e4e11 100644
--- a/x86_64-w64-mingw32/lib/libftpsvc2.a
+++ b/x86_64-w64-mingw32/lib/libftpsvc2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfwcfg.a b/x86_64-w64-mingw32/lib/libfwcfg.a
index 819b647..e7d15a4 100644
--- a/x86_64-w64-mingw32/lib/libfwcfg.a
+++ b/x86_64-w64-mingw32/lib/libfwcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfwpuclnt.a b/x86_64-w64-mingw32/lib/libfwpuclnt.a
index fa343f6..1a880f4 100644
--- a/x86_64-w64-mingw32/lib/libfwpuclnt.a
+++ b/x86_64-w64-mingw32/lib/libfwpuclnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsapi.a b/x86_64-w64-mingw32/lib/libfxsapi.a
index a3d3860..a293157 100644
--- a/x86_64-w64-mingw32/lib/libfxsapi.a
+++ b/x86_64-w64-mingw32/lib/libfxsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxscfgwz.a b/x86_64-w64-mingw32/lib/libfxscfgwz.a
index 4d686b6..8db2ff9 100644
--- a/x86_64-w64-mingw32/lib/libfxscfgwz.a
+++ b/x86_64-w64-mingw32/lib/libfxscfgwz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxscom.a b/x86_64-w64-mingw32/lib/libfxscom.a
index 7e9bf81..eaf80ee 100644
--- a/x86_64-w64-mingw32/lib/libfxscom.a
+++ b/x86_64-w64-mingw32/lib/libfxscom.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxscomex.a b/x86_64-w64-mingw32/lib/libfxscomex.a
index a91d23f..980848f 100644
--- a/x86_64-w64-mingw32/lib/libfxscomex.a
+++ b/x86_64-w64-mingw32/lib/libfxscomex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsdrv.a b/x86_64-w64-mingw32/lib/libfxsdrv.a
index ce68d12..d7adaac 100644
--- a/x86_64-w64-mingw32/lib/libfxsdrv.a
+++ b/x86_64-w64-mingw32/lib/libfxsdrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsmon.a b/x86_64-w64-mingw32/lib/libfxsmon.a
index ce77875..73c79fc 100644
--- a/x86_64-w64-mingw32/lib/libfxsmon.a
+++ b/x86_64-w64-mingw32/lib/libfxsmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsocm.a b/x86_64-w64-mingw32/lib/libfxsocm.a
index bc18226..9fd9634 100644
--- a/x86_64-w64-mingw32/lib/libfxsocm.a
+++ b/x86_64-w64-mingw32/lib/libfxsocm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsperf.a b/x86_64-w64-mingw32/lib/libfxsperf.a
index f45e810..ea5386c 100644
--- a/x86_64-w64-mingw32/lib/libfxsperf.a
+++ b/x86_64-w64-mingw32/lib/libfxsperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsroute.a b/x86_64-w64-mingw32/lib/libfxsroute.a
index 0fb169a..c236921 100644
--- a/x86_64-w64-mingw32/lib/libfxsroute.a
+++ b/x86_64-w64-mingw32/lib/libfxsroute.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsst.a b/x86_64-w64-mingw32/lib/libfxsst.a
index 39f8074..5cf4bd3 100644
--- a/x86_64-w64-mingw32/lib/libfxsst.a
+++ b/x86_64-w64-mingw32/lib/libfxsst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxst30.a b/x86_64-w64-mingw32/lib/libfxst30.a
index 1bba34d..0b1d6f4 100644
--- a/x86_64-w64-mingw32/lib/libfxst30.a
+++ b/x86_64-w64-mingw32/lib/libfxst30.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxstiff.a b/x86_64-w64-mingw32/lib/libfxstiff.a
index 3c4be91..377b4fa 100644
--- a/x86_64-w64-mingw32/lib/libfxstiff.a
+++ b/x86_64-w64-mingw32/lib/libfxstiff.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxsui.a b/x86_64-w64-mingw32/lib/libfxsui.a
index 06d3ff1..d3b877f 100644
--- a/x86_64-w64-mingw32/lib/libfxsui.a
+++ b/x86_64-w64-mingw32/lib/libfxsui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libfxswzrd.a b/x86_64-w64-mingw32/lib/libfxswzrd.a
index 052c4a0..6febb18 100644
--- a/x86_64-w64-mingw32/lib/libfxswzrd.a
+++ b/x86_64-w64-mingw32/lib/libfxswzrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgcdef.a b/x86_64-w64-mingw32/lib/libgcdef.a
index 227a872..5edf620 100644
--- a/x86_64-w64-mingw32/lib/libgcdef.a
+++ b/x86_64-w64-mingw32/lib/libgcdef.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgdi32.a b/x86_64-w64-mingw32/lib/libgdi32.a
index 0fb3761..07b1801 100644
--- a/x86_64-w64-mingw32/lib/libgdi32.a
+++ b/x86_64-w64-mingw32/lib/libgdi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgdiplus.a b/x86_64-w64-mingw32/lib/libgdiplus.a
index a625348..13ba5e6 100644
--- a/x86_64-w64-mingw32/lib/libgdiplus.a
+++ b/x86_64-w64-mingw32/lib/libgdiplus.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgetuname.a b/x86_64-w64-mingw32/lib/libgetuname.a
index 8586f03..68d2392 100644
--- a/x86_64-w64-mingw32/lib/libgetuname.a
+++ b/x86_64-w64-mingw32/lib/libgetuname.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libglmf32.a b/x86_64-w64-mingw32/lib/libglmf32.a
index 8d09447..40927ad 100644
--- a/x86_64-w64-mingw32/lib/libglmf32.a
+++ b/x86_64-w64-mingw32/lib/libglmf32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libglu32.a b/x86_64-w64-mingw32/lib/libglu32.a
index 9ac6a8b..d275a2e 100644
--- a/x86_64-w64-mingw32/lib/libglu32.a
+++ b/x86_64-w64-mingw32/lib/libglu32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgmon.a b/x86_64-w64-mingw32/lib/libgmon.a
index ec44d73..aa964f4 100644
--- a/x86_64-w64-mingw32/lib/libgmon.a
+++ b/x86_64-w64-mingw32/lib/libgmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgpedit.a b/x86_64-w64-mingw32/lib/libgpedit.a
index fcb755e..ca23d4d 100644
--- a/x86_64-w64-mingw32/lib/libgpedit.a
+++ b/x86_64-w64-mingw32/lib/libgpedit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgpkcsp.a b/x86_64-w64-mingw32/lib/libgpkcsp.a
index 7d9bda7..5f28fd0 100644
--- a/x86_64-w64-mingw32/lib/libgpkcsp.a
+++ b/x86_64-w64-mingw32/lib/libgpkcsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgptext.a b/x86_64-w64-mingw32/lib/libgptext.a
index a5f1fd6..8251075 100644
--- a/x86_64-w64-mingw32/lib/libgptext.a
+++ b/x86_64-w64-mingw32/lib/libgptext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libguitrn.a b/x86_64-w64-mingw32/lib/libguitrn.a
index e3a3ceb..a3fec84 100644
--- a/x86_64-w64-mingw32/lib/libguitrn.a
+++ b/x86_64-w64-mingw32/lib/libguitrn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libgzip.a b/x86_64-w64-mingw32/lib/libgzip.a
index 7a155af..87d0e22 100644
--- a/x86_64-w64-mingw32/lib/libgzip.a
+++ b/x86_64-w64-mingw32/lib/libgzip.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libh323msp.a b/x86_64-w64-mingw32/lib/libh323msp.a
index 447e0c2..11091ad 100644
--- a/x86_64-w64-mingw32/lib/libh323msp.a
+++ b/x86_64-w64-mingw32/lib/libh323msp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhal.a b/x86_64-w64-mingw32/lib/libhal.a
index dcc2845..43fd3bd 100644
--- a/x86_64-w64-mingw32/lib/libhal.a
+++ b/x86_64-w64-mingw32/lib/libhal.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhbaapi.a b/x86_64-w64-mingw32/lib/libhbaapi.a
index 68b7b7f..7849519 100644
--- a/x86_64-w64-mingw32/lib/libhbaapi.a
+++ b/x86_64-w64-mingw32/lib/libhbaapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhgfs.a b/x86_64-w64-mingw32/lib/libhgfs.a
index af16103..1fc6cbd 100644
--- a/x86_64-w64-mingw32/lib/libhgfs.a
+++ b/x86_64-w64-mingw32/lib/libhgfs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhhsetup.a b/x86_64-w64-mingw32/lib/libhhsetup.a
index c77d909..bd51e00 100644
--- a/x86_64-w64-mingw32/lib/libhhsetup.a
+++ b/x86_64-w64-mingw32/lib/libhhsetup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhid.a b/x86_64-w64-mingw32/lib/libhid.a
index 713f4fd..e925b36 100644
--- a/x86_64-w64-mingw32/lib/libhid.a
+++ b/x86_64-w64-mingw32/lib/libhid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhidclass.a b/x86_64-w64-mingw32/lib/libhidclass.a
index 1920a49..c99065c 100644
--- a/x86_64-w64-mingw32/lib/libhidclass.a
+++ b/x86_64-w64-mingw32/lib/libhidclass.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhidparse.a b/x86_64-w64-mingw32/lib/libhidparse.a
index 996c960..4ab039d 100644
--- a/x86_64-w64-mingw32/lib/libhidparse.a
+++ b/x86_64-w64-mingw32/lib/libhidparse.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhlink.a b/x86_64-w64-mingw32/lib/libhlink.a
index 4f649e8..4c62df7 100644
--- a/x86_64-w64-mingw32/lib/libhlink.a
+++ b/x86_64-w64-mingw32/lib/libhlink.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhmmapi.a b/x86_64-w64-mingw32/lib/libhmmapi.a
index ef5546f..17abcf2 100644
--- a/x86_64-w64-mingw32/lib/libhmmapi.a
+++ b/x86_64-w64-mingw32/lib/libhmmapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhnetcfg.a b/x86_64-w64-mingw32/lib/libhnetcfg.a
index a076bfa..c2f5e86 100644
--- a/x86_64-w64-mingw32/lib/libhnetcfg.a
+++ b/x86_64-w64-mingw32/lib/libhnetcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhnetmon.a b/x86_64-w64-mingw32/lib/libhnetmon.a
index 6e3644a..7d84f7c 100644
--- a/x86_64-w64-mingw32/lib/libhnetmon.a
+++ b/x86_64-w64-mingw32/lib/libhnetmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhnetwiz.a b/x86_64-w64-mingw32/lib/libhnetwiz.a
index e5ff411..3683eaf 100644
--- a/x86_64-w64-mingw32/lib/libhnetwiz.a
+++ b/x86_64-w64-mingw32/lib/libhnetwiz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhostmib.a b/x86_64-w64-mingw32/lib/libhostmib.a
index c7f2f24..b350487 100644
--- a/x86_64-w64-mingw32/lib/libhostmib.a
+++ b/x86_64-w64-mingw32/lib/libhostmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhotplug.a b/x86_64-w64-mingw32/lib/libhotplug.a
index 5958d56..44a04c2 100644
--- a/x86_64-w64-mingw32/lib/libhotplug.a
+++ b/x86_64-w64-mingw32/lib/libhotplug.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhticons.a b/x86_64-w64-mingw32/lib/libhticons.a
index 9218433..f8d9504 100644
--- a/x86_64-w64-mingw32/lib/libhticons.a
+++ b/x86_64-w64-mingw32/lib/libhticons.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhtrn_jis.a b/x86_64-w64-mingw32/lib/libhtrn_jis.a
index 8e824cd..1f99ad2 100644
--- a/x86_64-w64-mingw32/lib/libhtrn_jis.a
+++ b/x86_64-w64-mingw32/lib/libhtrn_jis.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhttpapi.a b/x86_64-w64-mingw32/lib/libhttpapi.a
index 5438b19..fabee58 100644
--- a/x86_64-w64-mingw32/lib/libhttpapi.a
+++ b/x86_64-w64-mingw32/lib/libhttpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhttpext.a b/x86_64-w64-mingw32/lib/libhttpext.a
index c495898..1b49c02 100644
--- a/x86_64-w64-mingw32/lib/libhttpext.a
+++ b/x86_64-w64-mingw32/lib/libhttpext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhttpmib.a b/x86_64-w64-mingw32/lib/libhttpmib.a
index 1365e97..460cd86 100644
--- a/x86_64-w64-mingw32/lib/libhttpmib.a
+++ b/x86_64-w64-mingw32/lib/libhttpmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhttpodbc.a b/x86_64-w64-mingw32/lib/libhttpodbc.a
index 3a486d2..3bb2caa 100644
--- a/x86_64-w64-mingw32/lib/libhttpodbc.a
+++ b/x86_64-w64-mingw32/lib/libhttpodbc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhtui.a b/x86_64-w64-mingw32/lib/libhtui.a
index f721e07..55156e8 100644
--- a/x86_64-w64-mingw32/lib/libhtui.a
+++ b/x86_64-w64-mingw32/lib/libhtui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libhypertrm.a b/x86_64-w64-mingw32/lib/libhypertrm.a
index 1030fe3..2e14cd9 100644
--- a/x86_64-w64-mingw32/lib/libhypertrm.a
+++ b/x86_64-w64-mingw32/lib/libhypertrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiasacct.a b/x86_64-w64-mingw32/lib/libiasacct.a
index 35f2f06..e4c9b7a 100644
--- a/x86_64-w64-mingw32/lib/libiasacct.a
+++ b/x86_64-w64-mingw32/lib/libiasacct.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiasads.a b/x86_64-w64-mingw32/lib/libiasads.a
index 082f621..f5bf27c 100644
--- a/x86_64-w64-mingw32/lib/libiasads.a
+++ b/x86_64-w64-mingw32/lib/libiasads.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiashlpr.a b/x86_64-w64-mingw32/lib/libiashlpr.a
index 0772311..c679f2d 100644
--- a/x86_64-w64-mingw32/lib/libiashlpr.a
+++ b/x86_64-w64-mingw32/lib/libiashlpr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiasnap.a b/x86_64-w64-mingw32/lib/libiasnap.a
index f5a81e0..cc23eac 100644
--- a/x86_64-w64-mingw32/lib/libiasnap.a
+++ b/x86_64-w64-mingw32/lib/libiasnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiaspolcy.a b/x86_64-w64-mingw32/lib/libiaspolcy.a
index 3ce4e1b..97c40b9 100644
--- a/x86_64-w64-mingw32/lib/libiaspolcy.a
+++ b/x86_64-w64-mingw32/lib/libiaspolcy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiasrad.a b/x86_64-w64-mingw32/lib/libiasrad.a
index 440dc29..c8420b4 100644
--- a/x86_64-w64-mingw32/lib/libiasrad.a
+++ b/x86_64-w64-mingw32/lib/libiasrad.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiassam.a b/x86_64-w64-mingw32/lib/libiassam.a
index 1fad0a3..8767057 100644
--- a/x86_64-w64-mingw32/lib/libiassam.a
+++ b/x86_64-w64-mingw32/lib/libiassam.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiassdo.a b/x86_64-w64-mingw32/lib/libiassdo.a
index b3f89c4..4a2cc68 100644
--- a/x86_64-w64-mingw32/lib/libiassdo.a
+++ b/x86_64-w64-mingw32/lib/libiassdo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiassvcs.a b/x86_64-w64-mingw32/lib/libiassvcs.a
index c2c1121..c6b347f 100644
--- a/x86_64-w64-mingw32/lib/libiassvcs.a
+++ b/x86_64-w64-mingw32/lib/libiassvcs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicaapi.a b/x86_64-w64-mingw32/lib/libicaapi.a
index 3b87fb7..333b7fc 100644
--- a/x86_64-w64-mingw32/lib/libicaapi.a
+++ b/x86_64-w64-mingw32/lib/libicaapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicfgnt5.a b/x86_64-w64-mingw32/lib/libicfgnt5.a
index 48f0013..4570320 100644
--- a/x86_64-w64-mingw32/lib/libicfgnt5.a
+++ b/x86_64-w64-mingw32/lib/libicfgnt5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicm32.a b/x86_64-w64-mingw32/lib/libicm32.a
index 0ba6926..dc32a4f 100644
--- a/x86_64-w64-mingw32/lib/libicm32.a
+++ b/x86_64-w64-mingw32/lib/libicm32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicmp.a b/x86_64-w64-mingw32/lib/libicmp.a
index da7a68d..9abb609 100644
--- a/x86_64-w64-mingw32/lib/libicmp.a
+++ b/x86_64-w64-mingw32/lib/libicmp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicmui.a b/x86_64-w64-mingw32/lib/libicmui.a
index 4d7a7fe..c7acd6c 100644
--- a/x86_64-w64-mingw32/lib/libicmui.a
+++ b/x86_64-w64-mingw32/lib/libicmui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwconn.a b/x86_64-w64-mingw32/lib/libicwconn.a
index 5a96da8..c1c7630 100644
--- a/x86_64-w64-mingw32/lib/libicwconn.a
+++ b/x86_64-w64-mingw32/lib/libicwconn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwdial.a b/x86_64-w64-mingw32/lib/libicwdial.a
index b02bded..f87672b 100644
--- a/x86_64-w64-mingw32/lib/libicwdial.a
+++ b/x86_64-w64-mingw32/lib/libicwdial.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwdl.a b/x86_64-w64-mingw32/lib/libicwdl.a
index bec9473..2fa7cdf 100644
--- a/x86_64-w64-mingw32/lib/libicwdl.a
+++ b/x86_64-w64-mingw32/lib/libicwdl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwhelp.a b/x86_64-w64-mingw32/lib/libicwhelp.a
index 69e1b83..d629deb 100644
--- a/x86_64-w64-mingw32/lib/libicwhelp.a
+++ b/x86_64-w64-mingw32/lib/libicwhelp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwphbk.a b/x86_64-w64-mingw32/lib/libicwphbk.a
index 592c5b0..6d57009 100644
--- a/x86_64-w64-mingw32/lib/libicwphbk.a
+++ b/x86_64-w64-mingw32/lib/libicwphbk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libicwutil.a b/x86_64-w64-mingw32/lib/libicwutil.a
index 1628c32..2af4729 100644
--- a/x86_64-w64-mingw32/lib/libicwutil.a
+++ b/x86_64-w64-mingw32/lib/libicwutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libidq.a b/x86_64-w64-mingw32/lib/libidq.a
index b8b4a77..161e67e 100644
--- a/x86_64-w64-mingw32/lib/libidq.a
+++ b/x86_64-w64-mingw32/lib/libidq.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libieakeng.a b/x86_64-w64-mingw32/lib/libieakeng.a
index f5d3a6a..22db2bc 100644
--- a/x86_64-w64-mingw32/lib/libieakeng.a
+++ b/x86_64-w64-mingw32/lib/libieakeng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libieaksie.a b/x86_64-w64-mingw32/lib/libieaksie.a
index 07a86a9..8911d65 100644
--- a/x86_64-w64-mingw32/lib/libieaksie.a
+++ b/x86_64-w64-mingw32/lib/libieaksie.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiedkcs32.a b/x86_64-w64-mingw32/lib/libiedkcs32.a
index e111bf1..c634503 100644
--- a/x86_64-w64-mingw32/lib/libiedkcs32.a
+++ b/x86_64-w64-mingw32/lib/libiedkcs32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libieencode.a b/x86_64-w64-mingw32/lib/libieencode.a
index 7b9518b..3772212 100644
--- a/x86_64-w64-mingw32/lib/libieencode.a
+++ b/x86_64-w64-mingw32/lib/libieencode.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiepeers.a b/x86_64-w64-mingw32/lib/libiepeers.a
index d2e6fe0..3607279 100644
--- a/x86_64-w64-mingw32/lib/libiepeers.a
+++ b/x86_64-w64-mingw32/lib/libiepeers.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiernonce.a b/x86_64-w64-mingw32/lib/libiernonce.a
index 76dd583..e19cb08 100644
--- a/x86_64-w64-mingw32/lib/libiernonce.a
+++ b/x86_64-w64-mingw32/lib/libiernonce.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiesetup.a b/x86_64-w64-mingw32/lib/libiesetup.a
index aeab3b2..2d0a173 100644
--- a/x86_64-w64-mingw32/lib/libiesetup.a
+++ b/x86_64-w64-mingw32/lib/libiesetup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libifmon.a b/x86_64-w64-mingw32/lib/libifmon.a
index 97bd66e..4bb3202 100644
--- a/x86_64-w64-mingw32/lib/libifmon.a
+++ b/x86_64-w64-mingw32/lib/libifmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libifsutil.a b/x86_64-w64-mingw32/lib/libifsutil.a
index fc5a8f9..60ab367 100644
--- a/x86_64-w64-mingw32/lib/libifsutil.a
+++ b/x86_64-w64-mingw32/lib/libifsutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libigmpagnt.a b/x86_64-w64-mingw32/lib/libigmpagnt.a
index 673d38d..e1a764f 100644
--- a/x86_64-w64-mingw32/lib/libigmpagnt.a
+++ b/x86_64-w64-mingw32/lib/libigmpagnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiis.a b/x86_64-w64-mingw32/lib/libiis.a
index deb50bf..16244e0 100644
--- a/x86_64-w64-mingw32/lib/libiis.a
+++ b/x86_64-w64-mingw32/lib/libiis.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisadmin.a b/x86_64-w64-mingw32/lib/libiisadmin.a
index 757cee7..95acb09 100644
--- a/x86_64-w64-mingw32/lib/libiisadmin.a
+++ b/x86_64-w64-mingw32/lib/libiisadmin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiiscfg.a b/x86_64-w64-mingw32/lib/libiiscfg.a
index 1a6a6b4..cd632a9 100644
--- a/x86_64-w64-mingw32/lib/libiiscfg.a
+++ b/x86_64-w64-mingw32/lib/libiiscfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisclex4.a b/x86_64-w64-mingw32/lib/libiisclex4.a
index 417c893..f4fe528 100644
--- a/x86_64-w64-mingw32/lib/libiisclex4.a
+++ b/x86_64-w64-mingw32/lib/libiisclex4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisext.a b/x86_64-w64-mingw32/lib/libiisext.a
index 18557c2..3f59334 100644
--- a/x86_64-w64-mingw32/lib/libiisext.a
+++ b/x86_64-w64-mingw32/lib/libiisext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiislog.a b/x86_64-w64-mingw32/lib/libiislog.a
index b45a610..d87bd10 100644
--- a/x86_64-w64-mingw32/lib/libiislog.a
+++ b/x86_64-w64-mingw32/lib/libiislog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiismap.a b/x86_64-w64-mingw32/lib/libiismap.a
index 21856ee..2c37385 100644
--- a/x86_64-w64-mingw32/lib/libiismap.a
+++ b/x86_64-w64-mingw32/lib/libiismap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisrstap.a b/x86_64-w64-mingw32/lib/libiisrstap.a
index 0211c4e..59a2f44 100644
--- a/x86_64-w64-mingw32/lib/libiisrstap.a
+++ b/x86_64-w64-mingw32/lib/libiisrstap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisrtl.a b/x86_64-w64-mingw32/lib/libiisrtl.a
index 5effc0a..335bddd 100644
--- a/x86_64-w64-mingw32/lib/libiisrtl.a
+++ b/x86_64-w64-mingw32/lib/libiisrtl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiissuba.a b/x86_64-w64-mingw32/lib/libiissuba.a
index 10f77d5..951cc37 100644
--- a/x86_64-w64-mingw32/lib/libiissuba.a
+++ b/x86_64-w64-mingw32/lib/libiissuba.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisui.a b/x86_64-w64-mingw32/lib/libiisui.a
index aac5655..6354398 100644
--- a/x86_64-w64-mingw32/lib/libiisui.a
+++ b/x86_64-w64-mingw32/lib/libiisui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisuiobj.a b/x86_64-w64-mingw32/lib/libiisuiobj.a
index 1a32308..80ba34f 100644
--- a/x86_64-w64-mingw32/lib/libiisuiobj.a
+++ b/x86_64-w64-mingw32/lib/libiisuiobj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisutil.a b/x86_64-w64-mingw32/lib/libiisutil.a
index 73c376e..97f1a98 100644
--- a/x86_64-w64-mingw32/lib/libiisutil.a
+++ b/x86_64-w64-mingw32/lib/libiisutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiisw3adm.a b/x86_64-w64-mingw32/lib/libiisw3adm.a
index 5990acc..4937936 100644
--- a/x86_64-w64-mingw32/lib/libiisw3adm.a
+++ b/x86_64-w64-mingw32/lib/libiisw3adm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiiswmi.a b/x86_64-w64-mingw32/lib/libiiswmi.a
index ae616fc..c47d8cc 100644
--- a/x86_64-w64-mingw32/lib/libiiswmi.a
+++ b/x86_64-w64-mingw32/lib/libiiswmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimagehlp.a b/x86_64-w64-mingw32/lib/libimagehlp.a
index 2af03cd..c5f8252 100644
--- a/x86_64-w64-mingw32/lib/libimagehlp.a
+++ b/x86_64-w64-mingw32/lib/libimagehlp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimekrcic.a b/x86_64-w64-mingw32/lib/libimekrcic.a
index af27228..3db5aa1 100644
--- a/x86_64-w64-mingw32/lib/libimekrcic.a
+++ b/x86_64-w64-mingw32/lib/libimekrcic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimeshare.a b/x86_64-w64-mingw32/lib/libimeshare.a
index 37bfab7..174f579 100644
--- a/x86_64-w64-mingw32/lib/libimeshare.a
+++ b/x86_64-w64-mingw32/lib/libimeshare.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimgutil.a b/x86_64-w64-mingw32/lib/libimgutil.a
index ae9a1d3..393146d 100644
--- a/x86_64-w64-mingw32/lib/libimgutil.a
+++ b/x86_64-w64-mingw32/lib/libimgutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimjp81k.a b/x86_64-w64-mingw32/lib/libimjp81k.a
index 1bcde9a..6880703 100644
--- a/x86_64-w64-mingw32/lib/libimjp81k.a
+++ b/x86_64-w64-mingw32/lib/libimjp81k.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimjpcic.a b/x86_64-w64-mingw32/lib/libimjpcic.a
index e58e630..ee467b5 100644
--- a/x86_64-w64-mingw32/lib/libimjpcic.a
+++ b/x86_64-w64-mingw32/lib/libimjpcic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimjpcus.a b/x86_64-w64-mingw32/lib/libimjpcus.a
index c4df12b..0d535fe 100644
--- a/x86_64-w64-mingw32/lib/libimjpcus.a
+++ b/x86_64-w64-mingw32/lib/libimjpcus.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimjpdct.a b/x86_64-w64-mingw32/lib/libimjpdct.a
index e0eac36..c66a751 100644
--- a/x86_64-w64-mingw32/lib/libimjpdct.a
+++ b/x86_64-w64-mingw32/lib/libimjpdct.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimjputyc.a b/x86_64-w64-mingw32/lib/libimjputyc.a
index 4e5c009..dc67e29 100644
--- a/x86_64-w64-mingw32/lib/libimjputyc.a
+++ b/x86_64-w64-mingw32/lib/libimjputyc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimm32.a b/x86_64-w64-mingw32/lib/libimm32.a
index 7b19996..16195d3 100644
--- a/x86_64-w64-mingw32/lib/libimm32.a
+++ b/x86_64-w64-mingw32/lib/libimm32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimsinsnt.a b/x86_64-w64-mingw32/lib/libimsinsnt.a
index 9fa2ba1..8ef4b61 100644
--- a/x86_64-w64-mingw32/lib/libimsinsnt.a
+++ b/x86_64-w64-mingw32/lib/libimsinsnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libimskdic.a b/x86_64-w64-mingw32/lib/libimskdic.a
index 4328166..cbcfd6f 100644
--- a/x86_64-w64-mingw32/lib/libimskdic.a
+++ b/x86_64-w64-mingw32/lib/libimskdic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetcfg.a b/x86_64-w64-mingw32/lib/libinetcfg.a
index f1a41b6..155aace 100644
--- a/x86_64-w64-mingw32/lib/libinetcfg.a
+++ b/x86_64-w64-mingw32/lib/libinetcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetcomm.a b/x86_64-w64-mingw32/lib/libinetcomm.a
index c5a9530..c13774d 100644
--- a/x86_64-w64-mingw32/lib/libinetcomm.a
+++ b/x86_64-w64-mingw32/lib/libinetcomm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetmgr.a b/x86_64-w64-mingw32/lib/libinetmgr.a
index adc612d..417ea7a 100644
--- a/x86_64-w64-mingw32/lib/libinetmgr.a
+++ b/x86_64-w64-mingw32/lib/libinetmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetmib1.a b/x86_64-w64-mingw32/lib/libinetmib1.a
index 1a35a26..1b0d5cb 100644
--- a/x86_64-w64-mingw32/lib/libinetmib1.a
+++ b/x86_64-w64-mingw32/lib/libinetmib1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetpp.a b/x86_64-w64-mingw32/lib/libinetpp.a
index 8f8afd0..26bfb43 100644
--- a/x86_64-w64-mingw32/lib/libinetpp.a
+++ b/x86_64-w64-mingw32/lib/libinetpp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinetppui.a b/x86_64-w64-mingw32/lib/libinetppui.a
index 3855264..4b89b37 100644
--- a/x86_64-w64-mingw32/lib/libinetppui.a
+++ b/x86_64-w64-mingw32/lib/libinetppui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinfoadmn.a b/x86_64-w64-mingw32/lib/libinfoadmn.a
index 8165b7b..0d0500e 100644
--- a/x86_64-w64-mingw32/lib/libinfoadmn.a
+++ b/x86_64-w64-mingw32/lib/libinfoadmn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinfocomm.a b/x86_64-w64-mingw32/lib/libinfocomm.a
index 42309fe..560fef5 100644
--- a/x86_64-w64-mingw32/lib/libinfocomm.a
+++ b/x86_64-w64-mingw32/lib/libinfocomm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinfoctrs.a b/x86_64-w64-mingw32/lib/libinfoctrs.a
index 4ead831..c78fbc3 100644
--- a/x86_64-w64-mingw32/lib/libinfoctrs.a
+++ b/x86_64-w64-mingw32/lib/libinfoctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinfosoft.a b/x86_64-w64-mingw32/lib/libinfosoft.a
index 2f94d50..f996c25 100644
--- a/x86_64-w64-mingw32/lib/libinfosoft.a
+++ b/x86_64-w64-mingw32/lib/libinfosoft.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinitpki.a b/x86_64-w64-mingw32/lib/libinitpki.a
index 841b124..9d818b8 100644
--- a/x86_64-w64-mingw32/lib/libinitpki.a
+++ b/x86_64-w64-mingw32/lib/libinitpki.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinput.a b/x86_64-w64-mingw32/lib/libinput.a
index 7a1cadf..e5098bd 100644
--- a/x86_64-w64-mingw32/lib/libinput.a
+++ b/x86_64-w64-mingw32/lib/libinput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libinseng.a b/x86_64-w64-mingw32/lib/libinseng.a
index 489f3bd..2567ad1 100644
--- a/x86_64-w64-mingw32/lib/libinseng.a
+++ b/x86_64-w64-mingw32/lib/libinseng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiphlpapi.a b/x86_64-w64-mingw32/lib/libiphlpapi.a
index 4c12b21..e093619 100644
--- a/x86_64-w64-mingw32/lib/libiphlpapi.a
+++ b/x86_64-w64-mingw32/lib/libiphlpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipmontr.a b/x86_64-w64-mingw32/lib/libipmontr.a
index f41030a..774e087 100644
--- a/x86_64-w64-mingw32/lib/libipmontr.a
+++ b/x86_64-w64-mingw32/lib/libipmontr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipnathlp.a b/x86_64-w64-mingw32/lib/libipnathlp.a
index d8fcc7a..9415da8 100644
--- a/x86_64-w64-mingw32/lib/libipnathlp.a
+++ b/x86_64-w64-mingw32/lib/libipnathlp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libippromon.a b/x86_64-w64-mingw32/lib/libippromon.a
index 5194261..5e39d2a 100644
--- a/x86_64-w64-mingw32/lib/libippromon.a
+++ b/x86_64-w64-mingw32/lib/libippromon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiprip.a b/x86_64-w64-mingw32/lib/libiprip.a
index 77299f3..0687fd5 100644
--- a/x86_64-w64-mingw32/lib/libiprip.a
+++ b/x86_64-w64-mingw32/lib/libiprip.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiprop.a b/x86_64-w64-mingw32/lib/libiprop.a
index 6b8cba1..98ba330 100644
--- a/x86_64-w64-mingw32/lib/libiprop.a
+++ b/x86_64-w64-mingw32/lib/libiprop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiprtprio.a b/x86_64-w64-mingw32/lib/libiprtprio.a
index 61f3efd..92ed6cd 100644
--- a/x86_64-w64-mingw32/lib/libiprtprio.a
+++ b/x86_64-w64-mingw32/lib/libiprtprio.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiprtrmgr.a b/x86_64-w64-mingw32/lib/libiprtrmgr.a
index 9ea1c81..ec65052 100644
--- a/x86_64-w64-mingw32/lib/libiprtrmgr.a
+++ b/x86_64-w64-mingw32/lib/libiprtrmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipsecsnp.a b/x86_64-w64-mingw32/lib/libipsecsnp.a
index 7f32611..340428f 100644
--- a/x86_64-w64-mingw32/lib/libipsecsnp.a
+++ b/x86_64-w64-mingw32/lib/libipsecsnp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipsecsvc.a b/x86_64-w64-mingw32/lib/libipsecsvc.a
index 7809389..e36e9b4 100644
--- a/x86_64-w64-mingw32/lib/libipsecsvc.a
+++ b/x86_64-w64-mingw32/lib/libipsecsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipsmsnap.a b/x86_64-w64-mingw32/lib/libipsmsnap.a
index 7de4bb5..4f7ece8 100644
--- a/x86_64-w64-mingw32/lib/libipsmsnap.a
+++ b/x86_64-w64-mingw32/lib/libipsmsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipv6mon.a b/x86_64-w64-mingw32/lib/libipv6mon.a
index a06d64a..6618799 100644
--- a/x86_64-w64-mingw32/lib/libipv6mon.a
+++ b/x86_64-w64-mingw32/lib/libipv6mon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libipxsap.a b/x86_64-w64-mingw32/lib/libipxsap.a
index e3b417a..1905e15 100644
--- a/x86_64-w64-mingw32/lib/libipxsap.a
+++ b/x86_64-w64-mingw32/lib/libipxsap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libirclass.a b/x86_64-w64-mingw32/lib/libirclass.a
index 5b6da9f..2f71122 100644
--- a/x86_64-w64-mingw32/lib/libirclass.a
+++ b/x86_64-w64-mingw32/lib/libirclass.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libisapips.a b/x86_64-w64-mingw32/lib/libisapips.a
index 590752c..c511fbd 100644
--- a/x86_64-w64-mingw32/lib/libisapips.a
+++ b/x86_64-w64-mingw32/lib/libisapips.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libisatq.a b/x86_64-w64-mingw32/lib/libisatq.a
index aaba33a..3f23603 100644
--- a/x86_64-w64-mingw32/lib/libisatq.a
+++ b/x86_64-w64-mingw32/lib/libisatq.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiscomlog.a b/x86_64-w64-mingw32/lib/libiscomlog.a
index 69e46ad..402688f 100644
--- a/x86_64-w64-mingw32/lib/libiscomlog.a
+++ b/x86_64-w64-mingw32/lib/libiscomlog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiscsidsc.a b/x86_64-w64-mingw32/lib/libiscsidsc.a
index ec34c5e..8b4b22b 100644
--- a/x86_64-w64-mingw32/lib/libiscsidsc.a
+++ b/x86_64-w64-mingw32/lib/libiscsidsc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libisign32.a b/x86_64-w64-mingw32/lib/libisign32.a
index 486fceb..bd8fe86 100644
--- a/x86_64-w64-mingw32/lib/libisign32.a
+++ b/x86_64-w64-mingw32/lib/libisign32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libitircl.a b/x86_64-w64-mingw32/lib/libitircl.a
index d0d55d8..03e5064 100644
--- a/x86_64-w64-mingw32/lib/libitircl.a
+++ b/x86_64-w64-mingw32/lib/libitircl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libitss.a b/x86_64-w64-mingw32/lib/libitss.a
index 319b9f4..f7c2ffc 100644
--- a/x86_64-w64-mingw32/lib/libitss.a
+++ b/x86_64-w64-mingw32/lib/libitss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libixsso.a b/x86_64-w64-mingw32/lib/libixsso.a
index 435781e..cc963e4 100644
--- a/x86_64-w64-mingw32/lib/libixsso.a
+++ b/x86_64-w64-mingw32/lib/libixsso.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libiyuv_32.a b/x86_64-w64-mingw32/lib/libiyuv_32.a
index 07639f1..b3a48a8 100644
--- a/x86_64-w64-mingw32/lib/libiyuv_32.a
+++ b/x86_64-w64-mingw32/lib/libiyuv_32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libjet500.a b/x86_64-w64-mingw32/lib/libjet500.a
index 9a5affc..1ff1e51 100644
--- a/x86_64-w64-mingw32/lib/libjet500.a
+++ b/x86_64-w64-mingw32/lib/libjet500.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libjscript.a b/x86_64-w64-mingw32/lib/libjscript.a
index bbb4185..2848098 100644
--- a/x86_64-w64-mingw32/lib/libjscript.a
+++ b/x86_64-w64-mingw32/lib/libjscript.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libjsproxy.a b/x86_64-w64-mingw32/lib/libjsproxy.a
index 4578533..499e8fe 100644
--- a/x86_64-w64-mingw32/lib/libjsproxy.a
+++ b/x86_64-w64-mingw32/lib/libjsproxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd101.a b/x86_64-w64-mingw32/lib/libkbd101.a
index 38d1ad5..a572e40 100644
--- a/x86_64-w64-mingw32/lib/libkbd101.a
+++ b/x86_64-w64-mingw32/lib/libkbd101.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd101a.a b/x86_64-w64-mingw32/lib/libkbd101a.a
index 9c464fb..6cf6f78 100644
--- a/x86_64-w64-mingw32/lib/libkbd101a.a
+++ b/x86_64-w64-mingw32/lib/libkbd101a.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd101b.a b/x86_64-w64-mingw32/lib/libkbd101b.a
index bf482a9..467875d 100644
--- a/x86_64-w64-mingw32/lib/libkbd101b.a
+++ b/x86_64-w64-mingw32/lib/libkbd101b.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd101c.a b/x86_64-w64-mingw32/lib/libkbd101c.a
index a3c21a8..4254e41 100644
--- a/x86_64-w64-mingw32/lib/libkbd101c.a
+++ b/x86_64-w64-mingw32/lib/libkbd101c.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd103.a b/x86_64-w64-mingw32/lib/libkbd103.a
index e658e6c..71f2d82 100644
--- a/x86_64-w64-mingw32/lib/libkbd103.a
+++ b/x86_64-w64-mingw32/lib/libkbd103.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd106.a b/x86_64-w64-mingw32/lib/libkbd106.a
index 5da9aab..50decea 100644
--- a/x86_64-w64-mingw32/lib/libkbd106.a
+++ b/x86_64-w64-mingw32/lib/libkbd106.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbd106n.a b/x86_64-w64-mingw32/lib/libkbd106n.a
index ffc1db9..22e45a5 100644
--- a/x86_64-w64-mingw32/lib/libkbd106n.a
+++ b/x86_64-w64-mingw32/lib/libkbd106n.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbda1.a b/x86_64-w64-mingw32/lib/libkbda1.a
index b453f0f..411c9a1 100644
--- a/x86_64-w64-mingw32/lib/libkbda1.a
+++ b/x86_64-w64-mingw32/lib/libkbda1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbda2.a b/x86_64-w64-mingw32/lib/libkbda2.a
index d9685ae..76317e9 100644
--- a/x86_64-w64-mingw32/lib/libkbda2.a
+++ b/x86_64-w64-mingw32/lib/libkbda2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbda3.a b/x86_64-w64-mingw32/lib/libkbda3.a
index 7d53c92..cec3843 100644
--- a/x86_64-w64-mingw32/lib/libkbda3.a
+++ b/x86_64-w64-mingw32/lib/libkbda3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdal.a b/x86_64-w64-mingw32/lib/libkbdal.a
index 60d4deb..351e369 100644
--- a/x86_64-w64-mingw32/lib/libkbdal.a
+++ b/x86_64-w64-mingw32/lib/libkbdal.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdarme.a b/x86_64-w64-mingw32/lib/libkbdarme.a
index e689142..b2d5dac 100644
--- a/x86_64-w64-mingw32/lib/libkbdarme.a
+++ b/x86_64-w64-mingw32/lib/libkbdarme.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdarmw.a b/x86_64-w64-mingw32/lib/libkbdarmw.a
index 6795562..a8b18a1 100644
--- a/x86_64-w64-mingw32/lib/libkbdarmw.a
+++ b/x86_64-w64-mingw32/lib/libkbdarmw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdax2.a b/x86_64-w64-mingw32/lib/libkbdax2.a
index dcb907b..3379fbf 100644
--- a/x86_64-w64-mingw32/lib/libkbdax2.a
+++ b/x86_64-w64-mingw32/lib/libkbdax2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdaze.a b/x86_64-w64-mingw32/lib/libkbdaze.a
index f09eb96..603df31 100644
--- a/x86_64-w64-mingw32/lib/libkbdaze.a
+++ b/x86_64-w64-mingw32/lib/libkbdaze.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdazel.a b/x86_64-w64-mingw32/lib/libkbdazel.a
index d783e92..65b78e5 100644
--- a/x86_64-w64-mingw32/lib/libkbdazel.a
+++ b/x86_64-w64-mingw32/lib/libkbdazel.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdbe.a b/x86_64-w64-mingw32/lib/libkbdbe.a
index ef2cde7..0464cad 100644
--- a/x86_64-w64-mingw32/lib/libkbdbe.a
+++ b/x86_64-w64-mingw32/lib/libkbdbe.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdbene.a b/x86_64-w64-mingw32/lib/libkbdbene.a
index 44b9d53..dea0604 100644
--- a/x86_64-w64-mingw32/lib/libkbdbene.a
+++ b/x86_64-w64-mingw32/lib/libkbdbene.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdblr.a b/x86_64-w64-mingw32/lib/libkbdblr.a
index d36dbe2..83e8966 100644
--- a/x86_64-w64-mingw32/lib/libkbdblr.a
+++ b/x86_64-w64-mingw32/lib/libkbdblr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdbr.a b/x86_64-w64-mingw32/lib/libkbdbr.a
index 4a033a9..c58dfe8 100644
--- a/x86_64-w64-mingw32/lib/libkbdbr.a
+++ b/x86_64-w64-mingw32/lib/libkbdbr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdbu.a b/x86_64-w64-mingw32/lib/libkbdbu.a
index 1a6ba41..502490b 100644
--- a/x86_64-w64-mingw32/lib/libkbdbu.a
+++ b/x86_64-w64-mingw32/lib/libkbdbu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdca.a b/x86_64-w64-mingw32/lib/libkbdca.a
index 019e473..1333af5 100644
--- a/x86_64-w64-mingw32/lib/libkbdca.a
+++ b/x86_64-w64-mingw32/lib/libkbdca.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdcan.a b/x86_64-w64-mingw32/lib/libkbdcan.a
index 05b971c..fd4724c 100644
--- a/x86_64-w64-mingw32/lib/libkbdcan.a
+++ b/x86_64-w64-mingw32/lib/libkbdcan.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdcr.a b/x86_64-w64-mingw32/lib/libkbdcr.a
index 6ea4be5..cd1b471 100644
--- a/x86_64-w64-mingw32/lib/libkbdcr.a
+++ b/x86_64-w64-mingw32/lib/libkbdcr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdcz.a b/x86_64-w64-mingw32/lib/libkbdcz.a
index 16c531c..462147d 100644
--- a/x86_64-w64-mingw32/lib/libkbdcz.a
+++ b/x86_64-w64-mingw32/lib/libkbdcz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdcz1.a b/x86_64-w64-mingw32/lib/libkbdcz1.a
index 34eb918..300cdc7 100644
--- a/x86_64-w64-mingw32/lib/libkbdcz1.a
+++ b/x86_64-w64-mingw32/lib/libkbdcz1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdcz2.a b/x86_64-w64-mingw32/lib/libkbdcz2.a
index f3925d2..f2b61b0 100644
--- a/x86_64-w64-mingw32/lib/libkbdcz2.a
+++ b/x86_64-w64-mingw32/lib/libkbdcz2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdda.a b/x86_64-w64-mingw32/lib/libkbdda.a
index 1f95b48..8b53846 100644
--- a/x86_64-w64-mingw32/lib/libkbdda.a
+++ b/x86_64-w64-mingw32/lib/libkbdda.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbddiv1.a b/x86_64-w64-mingw32/lib/libkbddiv1.a
index aacfa75..1902dcc 100644
--- a/x86_64-w64-mingw32/lib/libkbddiv1.a
+++ b/x86_64-w64-mingw32/lib/libkbddiv1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbddiv2.a b/x86_64-w64-mingw32/lib/libkbddiv2.a
index 563a6d8..7612058 100644
--- a/x86_64-w64-mingw32/lib/libkbddiv2.a
+++ b/x86_64-w64-mingw32/lib/libkbddiv2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbddv.a b/x86_64-w64-mingw32/lib/libkbddv.a
index f2e1728..49b716f 100644
--- a/x86_64-w64-mingw32/lib/libkbddv.a
+++ b/x86_64-w64-mingw32/lib/libkbddv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdes.a b/x86_64-w64-mingw32/lib/libkbdes.a
index 0238d7b..167bf1f 100644
--- a/x86_64-w64-mingw32/lib/libkbdes.a
+++ b/x86_64-w64-mingw32/lib/libkbdes.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdest.a b/x86_64-w64-mingw32/lib/libkbdest.a
index 8c41fc5..78a471c 100644
--- a/x86_64-w64-mingw32/lib/libkbdest.a
+++ b/x86_64-w64-mingw32/lib/libkbdest.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdfa.a b/x86_64-w64-mingw32/lib/libkbdfa.a
index 756020e..2354038 100644
--- a/x86_64-w64-mingw32/lib/libkbdfa.a
+++ b/x86_64-w64-mingw32/lib/libkbdfa.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdfc.a b/x86_64-w64-mingw32/lib/libkbdfc.a
index 91aefa3..a4e208a 100644
--- a/x86_64-w64-mingw32/lib/libkbdfc.a
+++ b/x86_64-w64-mingw32/lib/libkbdfc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdfi.a b/x86_64-w64-mingw32/lib/libkbdfi.a
index 1befe9a..8f3617e 100644
--- a/x86_64-w64-mingw32/lib/libkbdfi.a
+++ b/x86_64-w64-mingw32/lib/libkbdfi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdfo.a b/x86_64-w64-mingw32/lib/libkbdfo.a
index 3c9a06d..38d8fa1 100644
--- a/x86_64-w64-mingw32/lib/libkbdfo.a
+++ b/x86_64-w64-mingw32/lib/libkbdfo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdfr.a b/x86_64-w64-mingw32/lib/libkbdfr.a
index 017fde3..5606718 100644
--- a/x86_64-w64-mingw32/lib/libkbdfr.a
+++ b/x86_64-w64-mingw32/lib/libkbdfr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdgae.a b/x86_64-w64-mingw32/lib/libkbdgae.a
index e3e6065..a5d526f 100644
--- a/x86_64-w64-mingw32/lib/libkbdgae.a
+++ b/x86_64-w64-mingw32/lib/libkbdgae.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdgeo.a b/x86_64-w64-mingw32/lib/libkbdgeo.a
index 88864a1..80ee23f 100644
--- a/x86_64-w64-mingw32/lib/libkbdgeo.a
+++ b/x86_64-w64-mingw32/lib/libkbdgeo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdgkl.a b/x86_64-w64-mingw32/lib/libkbdgkl.a
index 77ab82d..62700e1 100644
--- a/x86_64-w64-mingw32/lib/libkbdgkl.a
+++ b/x86_64-w64-mingw32/lib/libkbdgkl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdgr.a b/x86_64-w64-mingw32/lib/libkbdgr.a
index 417f674..2f7187d 100644
--- a/x86_64-w64-mingw32/lib/libkbdgr.a
+++ b/x86_64-w64-mingw32/lib/libkbdgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdgr1.a b/x86_64-w64-mingw32/lib/libkbdgr1.a
index c795752..64ac571 100644
--- a/x86_64-w64-mingw32/lib/libkbdgr1.a
+++ b/x86_64-w64-mingw32/lib/libkbdgr1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhe.a b/x86_64-w64-mingw32/lib/libkbdhe.a
index 39e40f4..812dd3a 100644
--- a/x86_64-w64-mingw32/lib/libkbdhe.a
+++ b/x86_64-w64-mingw32/lib/libkbdhe.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhe220.a b/x86_64-w64-mingw32/lib/libkbdhe220.a
index 82d1381..5c6b5fb 100644
--- a/x86_64-w64-mingw32/lib/libkbdhe220.a
+++ b/x86_64-w64-mingw32/lib/libkbdhe220.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhe319.a b/x86_64-w64-mingw32/lib/libkbdhe319.a
index dc9ee84..01d8496 100644
--- a/x86_64-w64-mingw32/lib/libkbdhe319.a
+++ b/x86_64-w64-mingw32/lib/libkbdhe319.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdheb.a b/x86_64-w64-mingw32/lib/libkbdheb.a
index 6b07970..89dbb9c 100644
--- a/x86_64-w64-mingw32/lib/libkbdheb.a
+++ b/x86_64-w64-mingw32/lib/libkbdheb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhela2.a b/x86_64-w64-mingw32/lib/libkbdhela2.a
index e1f0303..d006f93 100644
--- a/x86_64-w64-mingw32/lib/libkbdhela2.a
+++ b/x86_64-w64-mingw32/lib/libkbdhela2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhela3.a b/x86_64-w64-mingw32/lib/libkbdhela3.a
index 3e158ac..338aa6e 100644
--- a/x86_64-w64-mingw32/lib/libkbdhela3.a
+++ b/x86_64-w64-mingw32/lib/libkbdhela3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhept.a b/x86_64-w64-mingw32/lib/libkbdhept.a
index 3cf7452..f781185 100644
--- a/x86_64-w64-mingw32/lib/libkbdhept.a
+++ b/x86_64-w64-mingw32/lib/libkbdhept.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhu.a b/x86_64-w64-mingw32/lib/libkbdhu.a
index ea2dab2..45c1c1e 100644
--- a/x86_64-w64-mingw32/lib/libkbdhu.a
+++ b/x86_64-w64-mingw32/lib/libkbdhu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdhu1.a b/x86_64-w64-mingw32/lib/libkbdhu1.a
index 232d38c..5da719e 100644
--- a/x86_64-w64-mingw32/lib/libkbdhu1.a
+++ b/x86_64-w64-mingw32/lib/libkbdhu1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdibm02.a b/x86_64-w64-mingw32/lib/libkbdibm02.a
index 2250d6e..7857c9f 100644
--- a/x86_64-w64-mingw32/lib/libkbdibm02.a
+++ b/x86_64-w64-mingw32/lib/libkbdibm02.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdic.a b/x86_64-w64-mingw32/lib/libkbdic.a
index 1771dc1..cea28ba 100644
--- a/x86_64-w64-mingw32/lib/libkbdic.a
+++ b/x86_64-w64-mingw32/lib/libkbdic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdindev.a b/x86_64-w64-mingw32/lib/libkbdindev.a
index 81a6b9b..a780456 100644
--- a/x86_64-w64-mingw32/lib/libkbdindev.a
+++ b/x86_64-w64-mingw32/lib/libkbdindev.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdinguj.a b/x86_64-w64-mingw32/lib/libkbdinguj.a
index 2d35e20..ad4694f 100644
--- a/x86_64-w64-mingw32/lib/libkbdinguj.a
+++ b/x86_64-w64-mingw32/lib/libkbdinguj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdinhin.a b/x86_64-w64-mingw32/lib/libkbdinhin.a
index 03fafd2..2f6ea41 100644
--- a/x86_64-w64-mingw32/lib/libkbdinhin.a
+++ b/x86_64-w64-mingw32/lib/libkbdinhin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdinkan.a b/x86_64-w64-mingw32/lib/libkbdinkan.a
index 4101c3c..646da0a 100644
--- a/x86_64-w64-mingw32/lib/libkbdinkan.a
+++ b/x86_64-w64-mingw32/lib/libkbdinkan.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdinmar.a b/x86_64-w64-mingw32/lib/libkbdinmar.a
index 530da3c..340004e 100644
--- a/x86_64-w64-mingw32/lib/libkbdinmar.a
+++ b/x86_64-w64-mingw32/lib/libkbdinmar.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdinpun.a b/x86_64-w64-mingw32/lib/libkbdinpun.a
index 31e51f6..6b3ea79 100644
--- a/x86_64-w64-mingw32/lib/libkbdinpun.a
+++ b/x86_64-w64-mingw32/lib/libkbdinpun.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdintam.a b/x86_64-w64-mingw32/lib/libkbdintam.a
index 9fddc25..a64c649 100644
--- a/x86_64-w64-mingw32/lib/libkbdintam.a
+++ b/x86_64-w64-mingw32/lib/libkbdintam.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdintel.a b/x86_64-w64-mingw32/lib/libkbdintel.a
index 81b6f93..66361ed 100644
--- a/x86_64-w64-mingw32/lib/libkbdintel.a
+++ b/x86_64-w64-mingw32/lib/libkbdintel.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdir.a b/x86_64-w64-mingw32/lib/libkbdir.a
index 9d7a302..dc76ace 100644
--- a/x86_64-w64-mingw32/lib/libkbdir.a
+++ b/x86_64-w64-mingw32/lib/libkbdir.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdit.a b/x86_64-w64-mingw32/lib/libkbdit.a
index 894cc19..2a225ed 100644
--- a/x86_64-w64-mingw32/lib/libkbdit.a
+++ b/x86_64-w64-mingw32/lib/libkbdit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdit142.a b/x86_64-w64-mingw32/lib/libkbdit142.a
index f87cb05..700a0da 100644
--- a/x86_64-w64-mingw32/lib/libkbdit142.a
+++ b/x86_64-w64-mingw32/lib/libkbdit142.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdjpn.a b/x86_64-w64-mingw32/lib/libkbdjpn.a
index b475a00..6f6d5e1 100644
--- a/x86_64-w64-mingw32/lib/libkbdjpn.a
+++ b/x86_64-w64-mingw32/lib/libkbdjpn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdkaz.a b/x86_64-w64-mingw32/lib/libkbdkaz.a
index 1dc0d9a..c317adb 100644
--- a/x86_64-w64-mingw32/lib/libkbdkaz.a
+++ b/x86_64-w64-mingw32/lib/libkbdkaz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdkor.a b/x86_64-w64-mingw32/lib/libkbdkor.a
index dc9d987..4c4ee3d 100644
--- a/x86_64-w64-mingw32/lib/libkbdkor.a
+++ b/x86_64-w64-mingw32/lib/libkbdkor.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdkyr.a b/x86_64-w64-mingw32/lib/libkbdkyr.a
index b86d56b..2149fae 100644
--- a/x86_64-w64-mingw32/lib/libkbdkyr.a
+++ b/x86_64-w64-mingw32/lib/libkbdkyr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdla.a b/x86_64-w64-mingw32/lib/libkbdla.a
index c2d2a44..84a3465 100644
--- a/x86_64-w64-mingw32/lib/libkbdla.a
+++ b/x86_64-w64-mingw32/lib/libkbdla.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlk41a.a b/x86_64-w64-mingw32/lib/libkbdlk41a.a
index af59b14..3edebdb 100644
--- a/x86_64-w64-mingw32/lib/libkbdlk41a.a
+++ b/x86_64-w64-mingw32/lib/libkbdlk41a.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlk41j.a b/x86_64-w64-mingw32/lib/libkbdlk41j.a
index 74d4cb7..1605d35 100644
--- a/x86_64-w64-mingw32/lib/libkbdlk41j.a
+++ b/x86_64-w64-mingw32/lib/libkbdlk41j.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlt.a b/x86_64-w64-mingw32/lib/libkbdlt.a
index a548fbb..9546aa6 100644
--- a/x86_64-w64-mingw32/lib/libkbdlt.a
+++ b/x86_64-w64-mingw32/lib/libkbdlt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlt1.a b/x86_64-w64-mingw32/lib/libkbdlt1.a
index 4d7a248..cf7ce6a 100644
--- a/x86_64-w64-mingw32/lib/libkbdlt1.a
+++ b/x86_64-w64-mingw32/lib/libkbdlt1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlv.a b/x86_64-w64-mingw32/lib/libkbdlv.a
index 4ce855d..e6a8312 100644
--- a/x86_64-w64-mingw32/lib/libkbdlv.a
+++ b/x86_64-w64-mingw32/lib/libkbdlv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdlv1.a b/x86_64-w64-mingw32/lib/libkbdlv1.a
index 31132de..fd660c2 100644
--- a/x86_64-w64-mingw32/lib/libkbdlv1.a
+++ b/x86_64-w64-mingw32/lib/libkbdlv1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdmac.a b/x86_64-w64-mingw32/lib/libkbdmac.a
index 2e1c918..6b4d66e 100644
--- a/x86_64-w64-mingw32/lib/libkbdmac.a
+++ b/x86_64-w64-mingw32/lib/libkbdmac.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdmon.a b/x86_64-w64-mingw32/lib/libkbdmon.a
index 665f886..75627ca 100644
--- a/x86_64-w64-mingw32/lib/libkbdmon.a
+++ b/x86_64-w64-mingw32/lib/libkbdmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdne.a b/x86_64-w64-mingw32/lib/libkbdne.a
index fabebfd..52cedce 100644
--- a/x86_64-w64-mingw32/lib/libkbdne.a
+++ b/x86_64-w64-mingw32/lib/libkbdne.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdnec.a b/x86_64-w64-mingw32/lib/libkbdnec.a
index 89c9f9c..551fdbc 100644
--- a/x86_64-w64-mingw32/lib/libkbdnec.a
+++ b/x86_64-w64-mingw32/lib/libkbdnec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdnec95.a b/x86_64-w64-mingw32/lib/libkbdnec95.a
index ffbbb14..1bcf9f5 100644
--- a/x86_64-w64-mingw32/lib/libkbdnec95.a
+++ b/x86_64-w64-mingw32/lib/libkbdnec95.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdnecat.a b/x86_64-w64-mingw32/lib/libkbdnecat.a
index 21cf133..7806433 100644
--- a/x86_64-w64-mingw32/lib/libkbdnecat.a
+++ b/x86_64-w64-mingw32/lib/libkbdnecat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdnecnt.a b/x86_64-w64-mingw32/lib/libkbdnecnt.a
index 51d3478..33d6cd0 100644
--- a/x86_64-w64-mingw32/lib/libkbdnecnt.a
+++ b/x86_64-w64-mingw32/lib/libkbdnecnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdno.a b/x86_64-w64-mingw32/lib/libkbdno.a
index 749279c..9519faa 100644
--- a/x86_64-w64-mingw32/lib/libkbdno.a
+++ b/x86_64-w64-mingw32/lib/libkbdno.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdpl.a b/x86_64-w64-mingw32/lib/libkbdpl.a
index 6431f9e..660d2b6 100644
--- a/x86_64-w64-mingw32/lib/libkbdpl.a
+++ b/x86_64-w64-mingw32/lib/libkbdpl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdpl1.a b/x86_64-w64-mingw32/lib/libkbdpl1.a
index 6a45c20..fc9d8f9 100644
--- a/x86_64-w64-mingw32/lib/libkbdpl1.a
+++ b/x86_64-w64-mingw32/lib/libkbdpl1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdpo.a b/x86_64-w64-mingw32/lib/libkbdpo.a
index 26e3183..e3e4e63 100644
--- a/x86_64-w64-mingw32/lib/libkbdpo.a
+++ b/x86_64-w64-mingw32/lib/libkbdpo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdro.a b/x86_64-w64-mingw32/lib/libkbdro.a
index 8100bba..92d141e 100644
--- a/x86_64-w64-mingw32/lib/libkbdro.a
+++ b/x86_64-w64-mingw32/lib/libkbdro.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdru.a b/x86_64-w64-mingw32/lib/libkbdru.a
index 9060716..566a982 100644
--- a/x86_64-w64-mingw32/lib/libkbdru.a
+++ b/x86_64-w64-mingw32/lib/libkbdru.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdru1.a b/x86_64-w64-mingw32/lib/libkbdru1.a
index dead597..8aa2a0b 100644
--- a/x86_64-w64-mingw32/lib/libkbdru1.a
+++ b/x86_64-w64-mingw32/lib/libkbdru1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsf.a b/x86_64-w64-mingw32/lib/libkbdsf.a
index 87a221f..d5ef3b8 100644
--- a/x86_64-w64-mingw32/lib/libkbdsf.a
+++ b/x86_64-w64-mingw32/lib/libkbdsf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsg.a b/x86_64-w64-mingw32/lib/libkbdsg.a
index a5d703b..a7ecd80 100644
--- a/x86_64-w64-mingw32/lib/libkbdsg.a
+++ b/x86_64-w64-mingw32/lib/libkbdsg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsl.a b/x86_64-w64-mingw32/lib/libkbdsl.a
index c2006f3..a1c22bd 100644
--- a/x86_64-w64-mingw32/lib/libkbdsl.a
+++ b/x86_64-w64-mingw32/lib/libkbdsl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsl1.a b/x86_64-w64-mingw32/lib/libkbdsl1.a
index 4f6c757..d4a4e45 100644
--- a/x86_64-w64-mingw32/lib/libkbdsl1.a
+++ b/x86_64-w64-mingw32/lib/libkbdsl1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsp.a b/x86_64-w64-mingw32/lib/libkbdsp.a
index 3cf0a6d..a606317 100644
--- a/x86_64-w64-mingw32/lib/libkbdsp.a
+++ b/x86_64-w64-mingw32/lib/libkbdsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsw.a b/x86_64-w64-mingw32/lib/libkbdsw.a
index e93544e..31481ec 100644
--- a/x86_64-w64-mingw32/lib/libkbdsw.a
+++ b/x86_64-w64-mingw32/lib/libkbdsw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsyr1.a b/x86_64-w64-mingw32/lib/libkbdsyr1.a
index 6e60ad0..495bbb5 100644
--- a/x86_64-w64-mingw32/lib/libkbdsyr1.a
+++ b/x86_64-w64-mingw32/lib/libkbdsyr1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdsyr2.a b/x86_64-w64-mingw32/lib/libkbdsyr2.a
index bd18f88..2411a32 100644
--- a/x86_64-w64-mingw32/lib/libkbdsyr2.a
+++ b/x86_64-w64-mingw32/lib/libkbdsyr2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdtat.a b/x86_64-w64-mingw32/lib/libkbdtat.a
index 70853f3..32c5099 100644
--- a/x86_64-w64-mingw32/lib/libkbdtat.a
+++ b/x86_64-w64-mingw32/lib/libkbdtat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdth0.a b/x86_64-w64-mingw32/lib/libkbdth0.a
index 5f1f939..80d10bf 100644
--- a/x86_64-w64-mingw32/lib/libkbdth0.a
+++ b/x86_64-w64-mingw32/lib/libkbdth0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdth1.a b/x86_64-w64-mingw32/lib/libkbdth1.a
index 7c173fc..a102079 100644
--- a/x86_64-w64-mingw32/lib/libkbdth1.a
+++ b/x86_64-w64-mingw32/lib/libkbdth1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdth2.a b/x86_64-w64-mingw32/lib/libkbdth2.a
index 5fa0988..385ae32 100644
--- a/x86_64-w64-mingw32/lib/libkbdth2.a
+++ b/x86_64-w64-mingw32/lib/libkbdth2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdth3.a b/x86_64-w64-mingw32/lib/libkbdth3.a
index c3ae76e..aed5fc8 100644
--- a/x86_64-w64-mingw32/lib/libkbdth3.a
+++ b/x86_64-w64-mingw32/lib/libkbdth3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdtuf.a b/x86_64-w64-mingw32/lib/libkbdtuf.a
index eed6be6..ff3a33c 100644
--- a/x86_64-w64-mingw32/lib/libkbdtuf.a
+++ b/x86_64-w64-mingw32/lib/libkbdtuf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdtuq.a b/x86_64-w64-mingw32/lib/libkbdtuq.a
index 956b11f..8851508 100644
--- a/x86_64-w64-mingw32/lib/libkbdtuq.a
+++ b/x86_64-w64-mingw32/lib/libkbdtuq.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbduk.a b/x86_64-w64-mingw32/lib/libkbduk.a
index b001b9b..e963b2c 100644
--- a/x86_64-w64-mingw32/lib/libkbduk.a
+++ b/x86_64-w64-mingw32/lib/libkbduk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdur.a b/x86_64-w64-mingw32/lib/libkbdur.a
index 849a4e5..02afebf 100644
--- a/x86_64-w64-mingw32/lib/libkbdur.a
+++ b/x86_64-w64-mingw32/lib/libkbdur.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdurdu.a b/x86_64-w64-mingw32/lib/libkbdurdu.a
index 8f7222e..3b8ce74 100644
--- a/x86_64-w64-mingw32/lib/libkbdurdu.a
+++ b/x86_64-w64-mingw32/lib/libkbdurdu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdus.a b/x86_64-w64-mingw32/lib/libkbdus.a
index 847d727..5670075 100644
--- a/x86_64-w64-mingw32/lib/libkbdus.a
+++ b/x86_64-w64-mingw32/lib/libkbdus.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdusa.a b/x86_64-w64-mingw32/lib/libkbdusa.a
index 33ae8e5..577a481 100644
--- a/x86_64-w64-mingw32/lib/libkbdusa.a
+++ b/x86_64-w64-mingw32/lib/libkbdusa.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdusl.a b/x86_64-w64-mingw32/lib/libkbdusl.a
index 5d21f47..9234a9c 100644
--- a/x86_64-w64-mingw32/lib/libkbdusl.a
+++ b/x86_64-w64-mingw32/lib/libkbdusl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdusr.a b/x86_64-w64-mingw32/lib/libkbdusr.a
index f53d7fc..031b9f8 100644
--- a/x86_64-w64-mingw32/lib/libkbdusr.a
+++ b/x86_64-w64-mingw32/lib/libkbdusr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdusx.a b/x86_64-w64-mingw32/lib/libkbdusx.a
index aa770ef..5e87e1f 100644
--- a/x86_64-w64-mingw32/lib/libkbdusx.a
+++ b/x86_64-w64-mingw32/lib/libkbdusx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbduzb.a b/x86_64-w64-mingw32/lib/libkbduzb.a
index 9d2ca60..5c69446 100644
--- a/x86_64-w64-mingw32/lib/libkbduzb.a
+++ b/x86_64-w64-mingw32/lib/libkbduzb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdvntc.a b/x86_64-w64-mingw32/lib/libkbdvntc.a
index ce985a8..ae82ce4 100644
--- a/x86_64-w64-mingw32/lib/libkbdvntc.a
+++ b/x86_64-w64-mingw32/lib/libkbdvntc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdycc.a b/x86_64-w64-mingw32/lib/libkbdycc.a
index 83462c4..8d1998e 100644
--- a/x86_64-w64-mingw32/lib/libkbdycc.a
+++ b/x86_64-w64-mingw32/lib/libkbdycc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkbdycl.a b/x86_64-w64-mingw32/lib/libkbdycl.a
index 3f1b337..623fe5e 100644
--- a/x86_64-w64-mingw32/lib/libkbdycl.a
+++ b/x86_64-w64-mingw32/lib/libkbdycl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkd1394.a b/x86_64-w64-mingw32/lib/libkd1394.a
index ea962e5..134d4d9 100644
--- a/x86_64-w64-mingw32/lib/libkd1394.a
+++ b/x86_64-w64-mingw32/lib/libkd1394.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkdcom.a b/x86_64-w64-mingw32/lib/libkdcom.a
index 53c3267..7caed0c 100644
--- a/x86_64-w64-mingw32/lib/libkdcom.a
+++ b/x86_64-w64-mingw32/lib/libkdcom.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkerberos.a b/x86_64-w64-mingw32/lib/libkerberos.a
index 15b23ec..5ac09ab 100644
--- a/x86_64-w64-mingw32/lib/libkerberos.a
+++ b/x86_64-w64-mingw32/lib/libkerberos.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkernel32.a b/x86_64-w64-mingw32/lib/libkernel32.a
index d680a8a..0ee6180 100644
--- a/x86_64-w64-mingw32/lib/libkernel32.a
+++ b/x86_64-w64-mingw32/lib/libkernel32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkeymgr.a b/x86_64-w64-mingw32/lib/libkeymgr.a
index 0804c0b..b9a5292 100644
--- a/x86_64-w64-mingw32/lib/libkeymgr.a
+++ b/x86_64-w64-mingw32/lib/libkeymgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkorwbrkr.a b/x86_64-w64-mingw32/lib/libkorwbrkr.a
index 112981c..5d8defc 100644
--- a/x86_64-w64-mingw32/lib/libkorwbrkr.a
+++ b/x86_64-w64-mingw32/lib/libkorwbrkr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libkrnlprov.a b/x86_64-w64-mingw32/lib/libkrnlprov.a
index de22809..74dc4c5 100644
--- a/x86_64-w64-mingw32/lib/libkrnlprov.a
+++ b/x86_64-w64-mingw32/lib/libkrnlprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libks.a b/x86_64-w64-mingw32/lib/libks.a
index 8aa9ac0..6b98d3a 100644
--- a/x86_64-w64-mingw32/lib/libks.a
+++ b/x86_64-w64-mingw32/lib/libks.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libksguid.a b/x86_64-w64-mingw32/lib/libksguid.a
index c907794..8fb144d 100644
--- a/x86_64-w64-mingw32/lib/libksguid.a
+++ b/x86_64-w64-mingw32/lib/libksguid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libksuser.a b/x86_64-w64-mingw32/lib/libksuser.a
index 20d7de3..a9c3416 100644
--- a/x86_64-w64-mingw32/lib/libksuser.a
+++ b/x86_64-w64-mingw32/lib/libksuser.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libktmw32.a b/x86_64-w64-mingw32/lib/libktmw32.a
index 61185d5..20850a4 100644
--- a/x86_64-w64-mingw32/lib/libktmw32.a
+++ b/x86_64-w64-mingw32/lib/libktmw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblangwrbk.a b/x86_64-w64-mingw32/lib/liblangwrbk.a
index bdd0973..7883f82 100644
--- a/x86_64-w64-mingw32/lib/liblangwrbk.a
+++ b/x86_64-w64-mingw32/lib/liblangwrbk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblargeint.a b/x86_64-w64-mingw32/lib/liblargeint.a
index 09fe5e8..ff97b80 100644
--- a/x86_64-w64-mingw32/lib/liblargeint.a
+++ b/x86_64-w64-mingw32/lib/liblargeint.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblicdll.a b/x86_64-w64-mingw32/lib/liblicdll.a
index df500a6..c6f6338 100644
--- a/x86_64-w64-mingw32/lib/liblicdll.a
+++ b/x86_64-w64-mingw32/lib/liblicdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblicmgr10.a b/x86_64-w64-mingw32/lib/liblicmgr10.a
index 9c6d094..73e84b7 100644
--- a/x86_64-w64-mingw32/lib/liblicmgr10.a
+++ b/x86_64-w64-mingw32/lib/liblicmgr10.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblicwmi.a b/x86_64-w64-mingw32/lib/liblicwmi.a
index e122c30..749c78e 100644
--- a/x86_64-w64-mingw32/lib/liblicwmi.a
+++ b/x86_64-w64-mingw32/lib/liblicwmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblinkinfo.a b/x86_64-w64-mingw32/lib/liblinkinfo.a
index a4c6812..affadf0 100644
--- a/x86_64-w64-mingw32/lib/liblinkinfo.a
+++ b/x86_64-w64-mingw32/lib/liblinkinfo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblmhsvc.a b/x86_64-w64-mingw32/lib/liblmhsvc.a
index 895f9b4..1209560 100644
--- a/x86_64-w64-mingw32/lib/liblmhsvc.a
+++ b/x86_64-w64-mingw32/lib/liblmhsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblmmib2.a b/x86_64-w64-mingw32/lib/liblmmib2.a
index b16336e..dc6d444 100644
--- a/x86_64-w64-mingw32/lib/liblmmib2.a
+++ b/x86_64-w64-mingw32/lib/liblmmib2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblmrt.a b/x86_64-w64-mingw32/lib/liblmrt.a
index a6b2735..ccc611c 100644
--- a/x86_64-w64-mingw32/lib/liblmrt.a
+++ b/x86_64-w64-mingw32/lib/liblmrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libloadperf.a b/x86_64-w64-mingw32/lib/libloadperf.a
index 0945c4e..33ec544 100644
--- a/x86_64-w64-mingw32/lib/libloadperf.a
+++ b/x86_64-w64-mingw32/lib/libloadperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblocalsec.a b/x86_64-w64-mingw32/lib/liblocalsec.a
index 21dc610..00ce195 100644
--- a/x86_64-w64-mingw32/lib/liblocalsec.a
+++ b/x86_64-w64-mingw32/lib/liblocalsec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblocalspl.a b/x86_64-w64-mingw32/lib/liblocalspl.a
index 34dc24e..c1a97a1 100644
--- a/x86_64-w64-mingw32/lib/liblocalspl.a
+++ b/x86_64-w64-mingw32/lib/liblocalspl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblocalui.a b/x86_64-w64-mingw32/lib/liblocalui.a
index 8b9821a..3201af6 100644
--- a/x86_64-w64-mingw32/lib/liblocalui.a
+++ b/x86_64-w64-mingw32/lib/liblocalui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblocationapi.a b/x86_64-w64-mingw32/lib/liblocationapi.a
new file mode 100644
index 0000000..1914364
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/liblocationapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblog.a b/x86_64-w64-mingw32/lib/liblog.a
index 163299e..2c34858 100644
--- a/x86_64-w64-mingw32/lib/liblog.a
+++ b/x86_64-w64-mingw32/lib/liblog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libloghours.a b/x86_64-w64-mingw32/lib/libloghours.a
index f81bdc4..de2014f 100644
--- a/x86_64-w64-mingw32/lib/libloghours.a
+++ b/x86_64-w64-mingw32/lib/libloghours.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblogscrpt.a b/x86_64-w64-mingw32/lib/liblogscrpt.a
index 6d86a79..3cf32f2 100644
--- a/x86_64-w64-mingw32/lib/liblogscrpt.a
+++ b/x86_64-w64-mingw32/lib/liblogscrpt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblonsint.a b/x86_64-w64-mingw32/lib/liblonsint.a
index 2ce8825..b74b410 100644
--- a/x86_64-w64-mingw32/lib/liblonsint.a
+++ b/x86_64-w64-mingw32/lib/liblonsint.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblpdsvc.a b/x86_64-w64-mingw32/lib/liblpdsvc.a
index d63400e..bb85266 100644
--- a/x86_64-w64-mingw32/lib/liblpdsvc.a
+++ b/x86_64-w64-mingw32/lib/liblpdsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblpk.a b/x86_64-w64-mingw32/lib/liblpk.a
index 06f806f..3130729 100644
--- a/x86_64-w64-mingw32/lib/liblpk.a
+++ b/x86_64-w64-mingw32/lib/liblpk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblprhelp.a b/x86_64-w64-mingw32/lib/liblprhelp.a
index 0a6bcee..78653d0 100644
--- a/x86_64-w64-mingw32/lib/liblprhelp.a
+++ b/x86_64-w64-mingw32/lib/liblprhelp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblprmon.a b/x86_64-w64-mingw32/lib/liblprmon.a
index e4556ef..6cee67b 100644
--- a/x86_64-w64-mingw32/lib/liblprmon.a
+++ b/x86_64-w64-mingw32/lib/liblprmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblprmonui.a b/x86_64-w64-mingw32/lib/liblprmonui.a
index 254108c..8f8d051 100644
--- a/x86_64-w64-mingw32/lib/liblprmonui.a
+++ b/x86_64-w64-mingw32/lib/liblprmonui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblsasrv.a b/x86_64-w64-mingw32/lib/liblsasrv.a
index 79abcb1..5bcc4c5 100644
--- a/x86_64-w64-mingw32/lib/liblsasrv.a
+++ b/x86_64-w64-mingw32/lib/liblsasrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liblz32.a b/x86_64-w64-mingw32/lib/liblz32.a
index df4a388..69997ee 100644
--- a/x86_64-w64-mingw32/lib/liblz32.a
+++ b/x86_64-w64-mingw32/lib/liblz32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libm.a b/x86_64-w64-mingw32/lib/libm.a
index 2201a10..c843427 100644
--- a/x86_64-w64-mingw32/lib/libm.a
+++ b/x86_64-w64-mingw32/lib/libm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmag_hook.a b/x86_64-w64-mingw32/lib/libmag_hook.a
index c905f75..3807eb2 100644
--- a/x86_64-w64-mingw32/lib/libmag_hook.a
+++ b/x86_64-w64-mingw32/lib/libmag_hook.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmailmsg.a b/x86_64-w64-mingw32/lib/libmailmsg.a
index 0ef05cb..30cd8ec 100644
--- a/x86_64-w64-mingw32/lib/libmailmsg.a
+++ b/x86_64-w64-mingw32/lib/libmailmsg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmapi32.a b/x86_64-w64-mingw32/lib/libmapi32.a
index 284b539..e8abe51 100644
--- a/x86_64-w64-mingw32/lib/libmapi32.a
+++ b/x86_64-w64-mingw32/lib/libmapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmapistub.a b/x86_64-w64-mingw32/lib/libmapistub.a
index 2483118..a0a3a30 100644
--- a/x86_64-w64-mingw32/lib/libmapistub.a
+++ b/x86_64-w64-mingw32/lib/libmapistub.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmcastmib.a b/x86_64-w64-mingw32/lib/libmcastmib.a
index 13c9ec0..79792ed 100644
--- a/x86_64-w64-mingw32/lib/libmcastmib.a
+++ b/x86_64-w64-mingw32/lib/libmcastmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmcd32.a b/x86_64-w64-mingw32/lib/libmcd32.a
index d25bf6d..3f3b9be 100644
--- a/x86_64-w64-mingw32/lib/libmcd32.a
+++ b/x86_64-w64-mingw32/lib/libmcd32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmcdsrv32.a b/x86_64-w64-mingw32/lib/libmcdsrv32.a
index 5af16c3..700c915 100644
--- a/x86_64-w64-mingw32/lib/libmcdsrv32.a
+++ b/x86_64-w64-mingw32/lib/libmcdsrv32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmchgrcoi.a b/x86_64-w64-mingw32/lib/libmchgrcoi.a
index 5c4e5e8..91aaca0 100644
--- a/x86_64-w64-mingw32/lib/libmchgrcoi.a
+++ b/x86_64-w64-mingw32/lib/libmchgrcoi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmciavi32.a b/x86_64-w64-mingw32/lib/libmciavi32.a
index 782c845..4e83789 100644
--- a/x86_64-w64-mingw32/lib/libmciavi32.a
+++ b/x86_64-w64-mingw32/lib/libmciavi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmcicda.a b/x86_64-w64-mingw32/lib/libmcicda.a
index fdc915f..cec09b2 100644
--- a/x86_64-w64-mingw32/lib/libmcicda.a
+++ b/x86_64-w64-mingw32/lib/libmcicda.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmciole32.a b/x86_64-w64-mingw32/lib/libmciole32.a
index 8bb1bb4..ba4e1c0 100644
--- a/x86_64-w64-mingw32/lib/libmciole32.a
+++ b/x86_64-w64-mingw32/lib/libmciole32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmciqtz32.a b/x86_64-w64-mingw32/lib/libmciqtz32.a
index 7eb99de..b6b3be1 100644
--- a/x86_64-w64-mingw32/lib/libmciqtz32.a
+++ b/x86_64-w64-mingw32/lib/libmciqtz32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmciseq.a b/x86_64-w64-mingw32/lib/libmciseq.a
index c58e22b..e6f374d 100644
--- a/x86_64-w64-mingw32/lib/libmciseq.a
+++ b/x86_64-w64-mingw32/lib/libmciseq.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmciwave.a b/x86_64-w64-mingw32/lib/libmciwave.a
index b015fbc..d1c8a2d 100644
--- a/x86_64-w64-mingw32/lib/libmciwave.a
+++ b/x86_64-w64-mingw32/lib/libmciwave.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmdhcp.a b/x86_64-w64-mingw32/lib/libmdhcp.a
index 3057f5b..b455116 100644
--- a/x86_64-w64-mingw32/lib/libmdhcp.a
+++ b/x86_64-w64-mingw32/lib/libmdhcp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmdminst.a b/x86_64-w64-mingw32/lib/libmdminst.a
index 1893189..8dd7fd3 100644
--- a/x86_64-w64-mingw32/lib/libmdminst.a
+++ b/x86_64-w64-mingw32/lib/libmdminst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmetadata.a b/x86_64-w64-mingw32/lib/libmetadata.a
index a385310..6cccfef 100644
--- a/x86_64-w64-mingw32/lib/libmetadata.a
+++ b/x86_64-w64-mingw32/lib/libmetadata.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmf.a b/x86_64-w64-mingw32/lib/libmf.a
index fb26ef2..54eb797 100644
--- a/x86_64-w64-mingw32/lib/libmf.a
+++ b/x86_64-w64-mingw32/lib/libmf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmf3216.a b/x86_64-w64-mingw32/lib/libmf3216.a
index 74038e4..d3dcf7a 100644
--- a/x86_64-w64-mingw32/lib/libmf3216.a
+++ b/x86_64-w64-mingw32/lib/libmf3216.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmfc42.a b/x86_64-w64-mingw32/lib/libmfc42.a
index 85c04fd..cda70d8 100644
--- a/x86_64-w64-mingw32/lib/libmfc42.a
+++ b/x86_64-w64-mingw32/lib/libmfc42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmfc42u.a b/x86_64-w64-mingw32/lib/libmfc42u.a
index fc4cea2..5bd9451 100644
--- a/x86_64-w64-mingw32/lib/libmfc42u.a
+++ b/x86_64-w64-mingw32/lib/libmfc42u.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmfcsubs.a b/x86_64-w64-mingw32/lib/libmfcsubs.a
index 2b424dd..8cc5b7f 100644
--- a/x86_64-w64-mingw32/lib/libmfcsubs.a
+++ b/x86_64-w64-mingw32/lib/libmfcsubs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmfplat.a b/x86_64-w64-mingw32/lib/libmfplat.a
index b6f1aa8..a2d005f 100644
--- a/x86_64-w64-mingw32/lib/libmfplat.a
+++ b/x86_64-w64-mingw32/lib/libmfplat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmfuuid.a b/x86_64-w64-mingw32/lib/libmfuuid.a
index d030dee..220c183 100644
--- a/x86_64-w64-mingw32/lib/libmfuuid.a
+++ b/x86_64-w64-mingw32/lib/libmfuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmgmtapi.a b/x86_64-w64-mingw32/lib/libmgmtapi.a
index 7426070..bd1289d 100644
--- a/x86_64-w64-mingw32/lib/libmgmtapi.a
+++ b/x86_64-w64-mingw32/lib/libmgmtapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmidimap.a b/x86_64-w64-mingw32/lib/libmidimap.a
index f6919bc..b376bd1 100644
--- a/x86_64-w64-mingw32/lib/libmidimap.a
+++ b/x86_64-w64-mingw32/lib/libmidimap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmigism.a b/x86_64-w64-mingw32/lib/libmigism.a
index 27a4ed9..a0ef70f 100644
--- a/x86_64-w64-mingw32/lib/libmigism.a
+++ b/x86_64-w64-mingw32/lib/libmigism.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmiglibnt.a b/x86_64-w64-mingw32/lib/libmiglibnt.a
index d2773c8..d5f04f5 100644
--- a/x86_64-w64-mingw32/lib/libmiglibnt.a
+++ b/x86_64-w64-mingw32/lib/libmiglibnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmimefilt.a b/x86_64-w64-mingw32/lib/libmimefilt.a
index 3854d91..d472eba 100644
--- a/x86_64-w64-mingw32/lib/libmimefilt.a
+++ b/x86_64-w64-mingw32/lib/libmimefilt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmingw32.a b/x86_64-w64-mingw32/lib/libmingw32.a
index a648605..6423eed 100644
--- a/x86_64-w64-mingw32/lib/libmingw32.a
+++ b/x86_64-w64-mingw32/lib/libmingw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmingwex.a b/x86_64-w64-mingw32/lib/libmingwex.a
index a6e4bfc..7cb5c9e 100644
--- a/x86_64-w64-mingw32/lib/libmingwex.a
+++ b/x86_64-w64-mingw32/lib/libmingwex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmingwthrd.a b/x86_64-w64-mingw32/lib/libmingwthrd.a
index 87bc144..a6883b1 100644
--- a/x86_64-w64-mingw32/lib/libmingwthrd.a
+++ b/x86_64-w64-mingw32/lib/libmingwthrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmlang.a b/x86_64-w64-mingw32/lib/libmlang.a
index 3cbb8ca..b02b5b5 100644
--- a/x86_64-w64-mingw32/lib/libmlang.a
+++ b/x86_64-w64-mingw32/lib/libmlang.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmll_hp.a b/x86_64-w64-mingw32/lib/libmll_hp.a
index e3271d2..82ce026 100644
--- a/x86_64-w64-mingw32/lib/libmll_hp.a
+++ b/x86_64-w64-mingw32/lib/libmll_hp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmll_mtf.a b/x86_64-w64-mingw32/lib/libmll_mtf.a
index 79190f7..f169baa 100644
--- a/x86_64-w64-mingw32/lib/libmll_mtf.a
+++ b/x86_64-w64-mingw32/lib/libmll_mtf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmll_qic.a b/x86_64-w64-mingw32/lib/libmll_qic.a
index 4d974b7..1d53eb6 100644
--- a/x86_64-w64-mingw32/lib/libmll_qic.a
+++ b/x86_64-w64-mingw32/lib/libmll_qic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmmcbase.a b/x86_64-w64-mingw32/lib/libmmcbase.a
index 899d44f..382c0d1 100644
--- a/x86_64-w64-mingw32/lib/libmmcbase.a
+++ b/x86_64-w64-mingw32/lib/libmmcbase.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmmcndmgr.a b/x86_64-w64-mingw32/lib/libmmcndmgr.a
index 6c84787..5f804c6 100644
--- a/x86_64-w64-mingw32/lib/libmmcndmgr.a
+++ b/x86_64-w64-mingw32/lib/libmmcndmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmmcshext.a b/x86_64-w64-mingw32/lib/libmmcshext.a
index 1f88485..b94d7b5 100644
--- a/x86_64-w64-mingw32/lib/libmmcshext.a
+++ b/x86_64-w64-mingw32/lib/libmmcshext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmmfutil.a b/x86_64-w64-mingw32/lib/libmmfutil.a
index 1653d96..1e63804 100644
--- a/x86_64-w64-mingw32/lib/libmmfutil.a
+++ b/x86_64-w64-mingw32/lib/libmmfutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmmutilse.a b/x86_64-w64-mingw32/lib/libmmutilse.a
index a934c95..fd9f0c2 100644
--- a/x86_64-w64-mingw32/lib/libmmutilse.a
+++ b/x86_64-w64-mingw32/lib/libmmutilse.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmobsync.a b/x86_64-w64-mingw32/lib/libmobsync.a
index d31bd73..2fe6e43 100644
--- a/x86_64-w64-mingw32/lib/libmobsync.a
+++ b/x86_64-w64-mingw32/lib/libmobsync.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmodemui.a b/x86_64-w64-mingw32/lib/libmodemui.a
index 8500045..6711646 100644
--- a/x86_64-w64-mingw32/lib/libmodemui.a
+++ b/x86_64-w64-mingw32/lib/libmodemui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmofd.a b/x86_64-w64-mingw32/lib/libmofd.a
index c2b2d40..354f692 100644
--- a/x86_64-w64-mingw32/lib/libmofd.a
+++ b/x86_64-w64-mingw32/lib/libmofd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmoldname.a b/x86_64-w64-mingw32/lib/libmoldname.a
index d36f99e..ff63a86 100644
--- a/x86_64-w64-mingw32/lib/libmoldname.a
+++ b/x86_64-w64-mingw32/lib/libmoldname.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmpr.a b/x86_64-w64-mingw32/lib/libmpr.a
index 8d23d2c..c8c712c 100644
--- a/x86_64-w64-mingw32/lib/libmpr.a
+++ b/x86_64-w64-mingw32/lib/libmpr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmprapi.a b/x86_64-w64-mingw32/lib/libmprapi.a
index 2695d0d..d813ca9 100644
--- a/x86_64-w64-mingw32/lib/libmprapi.a
+++ b/x86_64-w64-mingw32/lib/libmprapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmprddm.a b/x86_64-w64-mingw32/lib/libmprddm.a
index c98857c..42c4762 100644
--- a/x86_64-w64-mingw32/lib/libmprddm.a
+++ b/x86_64-w64-mingw32/lib/libmprddm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmprdim.a b/x86_64-w64-mingw32/lib/libmprdim.a
index 32ffe67..ac98b7c 100644
--- a/x86_64-w64-mingw32/lib/libmprdim.a
+++ b/x86_64-w64-mingw32/lib/libmprdim.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmprmsg.a b/x86_64-w64-mingw32/lib/libmprmsg.a
index 3957139..1d1f389 100644
--- a/x86_64-w64-mingw32/lib/libmprmsg.a
+++ b/x86_64-w64-mingw32/lib/libmprmsg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmprui.a b/x86_64-w64-mingw32/lib/libmprui.a
index 1222f3a..c90eff0 100644
--- a/x86_64-w64-mingw32/lib/libmprui.a
+++ b/x86_64-w64-mingw32/lib/libmprui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqad.a b/x86_64-w64-mingw32/lib/libmqad.a
index 1d9a091..51976af 100644
--- a/x86_64-w64-mingw32/lib/libmqad.a
+++ b/x86_64-w64-mingw32/lib/libmqad.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqcertui.a b/x86_64-w64-mingw32/lib/libmqcertui.a
index d2fd066..9b2a690 100644
--- a/x86_64-w64-mingw32/lib/libmqcertui.a
+++ b/x86_64-w64-mingw32/lib/libmqcertui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqdscli.a b/x86_64-w64-mingw32/lib/libmqdscli.a
index 68a1abb..930cd85 100644
--- a/x86_64-w64-mingw32/lib/libmqdscli.a
+++ b/x86_64-w64-mingw32/lib/libmqdscli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqgentr.a b/x86_64-w64-mingw32/lib/libmqgentr.a
index 658fdc9..616f647 100644
--- a/x86_64-w64-mingw32/lib/libmqgentr.a
+++ b/x86_64-w64-mingw32/lib/libmqgentr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqise.a b/x86_64-w64-mingw32/lib/libmqise.a
index cebd618..1889bbd 100644
--- a/x86_64-w64-mingw32/lib/libmqise.a
+++ b/x86_64-w64-mingw32/lib/libmqise.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqlogmgr.a b/x86_64-w64-mingw32/lib/libmqlogmgr.a
index 304c174..2569862 100644
--- a/x86_64-w64-mingw32/lib/libmqlogmgr.a
+++ b/x86_64-w64-mingw32/lib/libmqlogmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqoa.a b/x86_64-w64-mingw32/lib/libmqoa.a
index 2d03460..e4812c5 100644
--- a/x86_64-w64-mingw32/lib/libmqoa.a
+++ b/x86_64-w64-mingw32/lib/libmqoa.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqperf.a b/x86_64-w64-mingw32/lib/libmqperf.a
index 77b08ef..40378fe 100644
--- a/x86_64-w64-mingw32/lib/libmqperf.a
+++ b/x86_64-w64-mingw32/lib/libmqperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqqm.a b/x86_64-w64-mingw32/lib/libmqqm.a
index dcfc5c4..7fe2a3c 100644
--- a/x86_64-w64-mingw32/lib/libmqqm.a
+++ b/x86_64-w64-mingw32/lib/libmqqm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqrt.a b/x86_64-w64-mingw32/lib/libmqrt.a
index e24d957..40d3e3a 100644
--- a/x86_64-w64-mingw32/lib/libmqrt.a
+++ b/x86_64-w64-mingw32/lib/libmqrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqrtdep.a b/x86_64-w64-mingw32/lib/libmqrtdep.a
index 24595f7..de317d8 100644
--- a/x86_64-w64-mingw32/lib/libmqrtdep.a
+++ b/x86_64-w64-mingw32/lib/libmqrtdep.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqsec.a b/x86_64-w64-mingw32/lib/libmqsec.a
index 8d1b5c4..4426155 100644
--- a/x86_64-w64-mingw32/lib/libmqsec.a
+++ b/x86_64-w64-mingw32/lib/libmqsec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqsnap.a b/x86_64-w64-mingw32/lib/libmqsnap.a
index d240f88..300b937 100644
--- a/x86_64-w64-mingw32/lib/libmqsnap.a
+++ b/x86_64-w64-mingw32/lib/libmqsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqtrig.a b/x86_64-w64-mingw32/lib/libmqtrig.a
index d918eeb..ec3eac7 100644
--- a/x86_64-w64-mingw32/lib/libmqtrig.a
+++ b/x86_64-w64-mingw32/lib/libmqtrig.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqupgrd.a b/x86_64-w64-mingw32/lib/libmqupgrd.a
index bf4dd73..c7c6486 100644
--- a/x86_64-w64-mingw32/lib/libmqupgrd.a
+++ b/x86_64-w64-mingw32/lib/libmqupgrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmqutil.a b/x86_64-w64-mingw32/lib/libmqutil.a
index d7e6a17..680a004 100644
--- a/x86_64-w64-mingw32/lib/libmqutil.a
+++ b/x86_64-w64-mingw32/lib/libmqutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsaatext.a b/x86_64-w64-mingw32/lib/libmsaatext.a
index 1b64149..acef538 100644
--- a/x86_64-w64-mingw32/lib/libmsaatext.a
+++ b/x86_64-w64-mingw32/lib/libmsaatext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsacm32.a b/x86_64-w64-mingw32/lib/libmsacm32.a
index 3ba9ff6..d85e164 100644
--- a/x86_64-w64-mingw32/lib/libmsacm32.a
+++ b/x86_64-w64-mingw32/lib/libmsacm32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadce.a b/x86_64-w64-mingw32/lib/libmsadce.a
index fc9ebf2..7a4fdfd 100644
--- a/x86_64-w64-mingw32/lib/libmsadce.a
+++ b/x86_64-w64-mingw32/lib/libmsadce.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadcf.a b/x86_64-w64-mingw32/lib/libmsadcf.a
index efeb937..f9b4370 100644
--- a/x86_64-w64-mingw32/lib/libmsadcf.a
+++ b/x86_64-w64-mingw32/lib/libmsadcf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadco.a b/x86_64-w64-mingw32/lib/libmsadco.a
index 19c6c3c..4c05b64 100644
--- a/x86_64-w64-mingw32/lib/libmsadco.a
+++ b/x86_64-w64-mingw32/lib/libmsadco.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadcs.a b/x86_64-w64-mingw32/lib/libmsadcs.a
index acffa1b..670d55c 100644
--- a/x86_64-w64-mingw32/lib/libmsadcs.a
+++ b/x86_64-w64-mingw32/lib/libmsadcs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadds.a b/x86_64-w64-mingw32/lib/libmsadds.a
index 253d912..1e15b94 100644
--- a/x86_64-w64-mingw32/lib/libmsadds.a
+++ b/x86_64-w64-mingw32/lib/libmsadds.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsado15.a b/x86_64-w64-mingw32/lib/libmsado15.a
index f39d315..1a6a274 100644
--- a/x86_64-w64-mingw32/lib/libmsado15.a
+++ b/x86_64-w64-mingw32/lib/libmsado15.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadomd.a b/x86_64-w64-mingw32/lib/libmsadomd.a
index 0707bc3..fe9eff0 100644
--- a/x86_64-w64-mingw32/lib/libmsadomd.a
+++ b/x86_64-w64-mingw32/lib/libmsadomd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsador15.a b/x86_64-w64-mingw32/lib/libmsador15.a
index d307bc8..9d93f5a 100644
--- a/x86_64-w64-mingw32/lib/libmsador15.a
+++ b/x86_64-w64-mingw32/lib/libmsador15.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadox.a b/x86_64-w64-mingw32/lib/libmsadox.a
index 536d9f9..755e6a5 100644
--- a/x86_64-w64-mingw32/lib/libmsadox.a
+++ b/x86_64-w64-mingw32/lib/libmsadox.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsadrh15.a b/x86_64-w64-mingw32/lib/libmsadrh15.a
index 4a052dd..df411ae 100644
--- a/x86_64-w64-mingw32/lib/libmsadrh15.a
+++ b/x86_64-w64-mingw32/lib/libmsadrh15.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsafd.a b/x86_64-w64-mingw32/lib/libmsafd.a
index 98a3a3a..755b6c8 100644
--- a/x86_64-w64-mingw32/lib/libmsafd.a
+++ b/x86_64-w64-mingw32/lib/libmsafd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsasn1.a b/x86_64-w64-mingw32/lib/libmsasn1.a
index 8c96441..d3dff92 100644
--- a/x86_64-w64-mingw32/lib/libmsasn1.a
+++ b/x86_64-w64-mingw32/lib/libmsasn1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmscandui.a b/x86_64-w64-mingw32/lib/libmscandui.a
index 5aa27fa..0b3daba 100644
--- a/x86_64-w64-mingw32/lib/libmscandui.a
+++ b/x86_64-w64-mingw32/lib/libmscandui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmscat32.a b/x86_64-w64-mingw32/lib/libmscat32.a
index 4bc707e..91e7296 100644
--- a/x86_64-w64-mingw32/lib/libmscat32.a
+++ b/x86_64-w64-mingw32/lib/libmscat32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmscms.a b/x86_64-w64-mingw32/lib/libmscms.a
index d91a868..86fde2e 100644
--- a/x86_64-w64-mingw32/lib/libmscms.a
+++ b/x86_64-w64-mingw32/lib/libmscms.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsctfmonitor.a b/x86_64-w64-mingw32/lib/libmsctfmonitor.a
index a54da28..699e26d 100644
--- a/x86_64-w64-mingw32/lib/libmsctfmonitor.a
+++ b/x86_64-w64-mingw32/lib/libmsctfmonitor.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsctfp.a b/x86_64-w64-mingw32/lib/libmsctfp.a
index a814f89..d1df872 100644
--- a/x86_64-w64-mingw32/lib/libmsctfp.a
+++ b/x86_64-w64-mingw32/lib/libmsctfp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdadiag.a b/x86_64-w64-mingw32/lib/libmsdadiag.a
index e6a0451..1500a31 100644
--- a/x86_64-w64-mingw32/lib/libmsdadiag.a
+++ b/x86_64-w64-mingw32/lib/libmsdadiag.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdaosp.a b/x86_64-w64-mingw32/lib/libmsdaosp.a
index f7345e2..f68d146 100644
--- a/x86_64-w64-mingw32/lib/libmsdaosp.a
+++ b/x86_64-w64-mingw32/lib/libmsdaosp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdaprst.a b/x86_64-w64-mingw32/lib/libmsdaprst.a
index 9808a0a..7282ad8 100644
--- a/x86_64-w64-mingw32/lib/libmsdaprst.a
+++ b/x86_64-w64-mingw32/lib/libmsdaprst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdaps.a b/x86_64-w64-mingw32/lib/libmsdaps.a
index 084a41e..468c497 100644
--- a/x86_64-w64-mingw32/lib/libmsdaps.a
+++ b/x86_64-w64-mingw32/lib/libmsdaps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdarem.a b/x86_64-w64-mingw32/lib/libmsdarem.a
index e9864d4..77124e4 100644
--- a/x86_64-w64-mingw32/lib/libmsdarem.a
+++ b/x86_64-w64-mingw32/lib/libmsdarem.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdart.a b/x86_64-w64-mingw32/lib/libmsdart.a
index 8bad604..3b30771 100644
--- a/x86_64-w64-mingw32/lib/libmsdart.a
+++ b/x86_64-w64-mingw32/lib/libmsdart.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdatl3.a b/x86_64-w64-mingw32/lib/libmsdatl3.a
index 99a0cea..f96bf46 100644
--- a/x86_64-w64-mingw32/lib/libmsdatl3.a
+++ b/x86_64-w64-mingw32/lib/libmsdatl3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdfmap.a b/x86_64-w64-mingw32/lib/libmsdfmap.a
index 6325ebb..643c95c 100644
--- a/x86_64-w64-mingw32/lib/libmsdfmap.a
+++ b/x86_64-w64-mingw32/lib/libmsdfmap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdmo.a b/x86_64-w64-mingw32/lib/libmsdmo.a
index e6daf05..6879220 100644
--- a/x86_64-w64-mingw32/lib/libmsdmo.a
+++ b/x86_64-w64-mingw32/lib/libmsdmo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdrm.a b/x86_64-w64-mingw32/lib/libmsdrm.a
index 2ee4e44..bbff124 100644
--- a/x86_64-w64-mingw32/lib/libmsdrm.a
+++ b/x86_64-w64-mingw32/lib/libmsdrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdtclog.a b/x86_64-w64-mingw32/lib/libmsdtclog.a
index 58630fb..f9585e7 100644
--- a/x86_64-w64-mingw32/lib/libmsdtclog.a
+++ b/x86_64-w64-mingw32/lib/libmsdtclog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdtcprx.a b/x86_64-w64-mingw32/lib/libmsdtcprx.a
index ba53201..7cd4124 100644
--- a/x86_64-w64-mingw32/lib/libmsdtcprx.a
+++ b/x86_64-w64-mingw32/lib/libmsdtcprx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdtcstp.a b/x86_64-w64-mingw32/lib/libmsdtcstp.a
index 805b487..930450f 100644
--- a/x86_64-w64-mingw32/lib/libmsdtcstp.a
+++ b/x86_64-w64-mingw32/lib/libmsdtcstp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdtctm.a b/x86_64-w64-mingw32/lib/libmsdtctm.a
index 7d41730..1ed6412 100644
--- a/x86_64-w64-mingw32/lib/libmsdtctm.a
+++ b/x86_64-w64-mingw32/lib/libmsdtctm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsdtcuiu.a b/x86_64-w64-mingw32/lib/libmsdtcuiu.a
index ddb0e31..ff7e4ad 100644
--- a/x86_64-w64-mingw32/lib/libmsdtcuiu.a
+++ b/x86_64-w64-mingw32/lib/libmsdtcuiu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsftedit.a b/x86_64-w64-mingw32/lib/libmsftedit.a
index 459d036..48d2436 100644
--- a/x86_64-w64-mingw32/lib/libmsftedit.a
+++ b/x86_64-w64-mingw32/lib/libmsftedit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsgina.a b/x86_64-w64-mingw32/lib/libmsgina.a
index 6c60b49..2042e33 100644
--- a/x86_64-w64-mingw32/lib/libmsgina.a
+++ b/x86_64-w64-mingw32/lib/libmsgina.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsgr3en.a b/x86_64-w64-mingw32/lib/libmsgr3en.a
index 7252025..e343917 100644
--- a/x86_64-w64-mingw32/lib/libmsgr3en.a
+++ b/x86_64-w64-mingw32/lib/libmsgr3en.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsgrocm.a b/x86_64-w64-mingw32/lib/libmsgrocm.a
index 7fe690b..a8a56fd 100644
--- a/x86_64-w64-mingw32/lib/libmsgrocm.a
+++ b/x86_64-w64-mingw32/lib/libmsgrocm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsgsvc.a b/x86_64-w64-mingw32/lib/libmsgsvc.a
index f8e3c3e..6649bdd 100644
--- a/x86_64-w64-mingw32/lib/libmsgsvc.a
+++ b/x86_64-w64-mingw32/lib/libmsgsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmshtml.a b/x86_64-w64-mingw32/lib/libmshtml.a
index 7579fe9..0826e4c 100644
--- a/x86_64-w64-mingw32/lib/libmshtml.a
+++ b/x86_64-w64-mingw32/lib/libmshtml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmshtmled.a b/x86_64-w64-mingw32/lib/libmshtmled.a
index 45ba48a..5d4e4c5 100644
--- a/x86_64-w64-mingw32/lib/libmshtmled.a
+++ b/x86_64-w64-mingw32/lib/libmshtmled.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsi.a b/x86_64-w64-mingw32/lib/libmsi.a
index 0e8d9fc..7e4e16c 100644
--- a/x86_64-w64-mingw32/lib/libmsi.a
+++ b/x86_64-w64-mingw32/lib/libmsi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsident.a b/x86_64-w64-mingw32/lib/libmsident.a
index e284348..4cb776c 100644
--- a/x86_64-w64-mingw32/lib/libmsident.a
+++ b/x86_64-w64-mingw32/lib/libmsident.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsieftp.a b/x86_64-w64-mingw32/lib/libmsieftp.a
index b68a784..98bb6ca 100644
--- a/x86_64-w64-mingw32/lib/libmsieftp.a
+++ b/x86_64-w64-mingw32/lib/libmsieftp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsihnd.a b/x86_64-w64-mingw32/lib/libmsihnd.a
index 4d0880f..d79231e 100644
--- a/x86_64-w64-mingw32/lib/libmsihnd.a
+++ b/x86_64-w64-mingw32/lib/libmsihnd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsimg32.a b/x86_64-w64-mingw32/lib/libmsimg32.a
index 3b1d82a..3544206 100644
--- a/x86_64-w64-mingw32/lib/libmsimg32.a
+++ b/x86_64-w64-mingw32/lib/libmsimg32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsimtf.a b/x86_64-w64-mingw32/lib/libmsimtf.a
index 41d08fd..9bf9c5f 100644
--- a/x86_64-w64-mingw32/lib/libmsimtf.a
+++ b/x86_64-w64-mingw32/lib/libmsimtf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsinfo.a b/x86_64-w64-mingw32/lib/libmsinfo.a
index 8243cb4..31b4a8a 100644
--- a/x86_64-w64-mingw32/lib/libmsinfo.a
+++ b/x86_64-w64-mingw32/lib/libmsinfo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsiprov.a b/x86_64-w64-mingw32/lib/libmsiprov.a
index b9d2afc..de4daf2 100644
--- a/x86_64-w64-mingw32/lib/libmsiprov.a
+++ b/x86_64-w64-mingw32/lib/libmsiprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsir3jp.a b/x86_64-w64-mingw32/lib/libmsir3jp.a
index 7c7f7ae..64fbeb1 100644
--- a/x86_64-w64-mingw32/lib/libmsir3jp.a
+++ b/x86_64-w64-mingw32/lib/libmsir3jp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsisip.a b/x86_64-w64-mingw32/lib/libmsisip.a
index 6161f2b..39d69f9 100644
--- a/x86_64-w64-mingw32/lib/libmsisip.a
+++ b/x86_64-w64-mingw32/lib/libmsisip.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmslbui.a b/x86_64-w64-mingw32/lib/libmslbui.a
index 4c2eef5..3baee59 100644
--- a/x86_64-w64-mingw32/lib/libmslbui.a
+++ b/x86_64-w64-mingw32/lib/libmslbui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsls31.a b/x86_64-w64-mingw32/lib/libmsls31.a
index 9112c7d..ee19f03 100644
--- a/x86_64-w64-mingw32/lib/libmsls31.a
+++ b/x86_64-w64-mingw32/lib/libmsls31.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmslwvtts.a b/x86_64-w64-mingw32/lib/libmslwvtts.a
index e4a6030..50f7c16 100644
--- a/x86_64-w64-mingw32/lib/libmslwvtts.a
+++ b/x86_64-w64-mingw32/lib/libmslwvtts.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsmqocm.a b/x86_64-w64-mingw32/lib/libmsmqocm.a
index 93e4a35..087eef1 100644
--- a/x86_64-w64-mingw32/lib/libmsmqocm.a
+++ b/x86_64-w64-mingw32/lib/libmsmqocm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsobcomm.a b/x86_64-w64-mingw32/lib/libmsobcomm.a
index 6c469d0..18ef3b0 100644
--- a/x86_64-w64-mingw32/lib/libmsobcomm.a
+++ b/x86_64-w64-mingw32/lib/libmsobcomm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsobdl.a b/x86_64-w64-mingw32/lib/libmsobdl.a
index e6f009e..e23c890 100644
--- a/x86_64-w64-mingw32/lib/libmsobdl.a
+++ b/x86_64-w64-mingw32/lib/libmsobdl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsobmain.a b/x86_64-w64-mingw32/lib/libmsobmain.a
index d1361f1..95d41b2 100644
--- a/x86_64-w64-mingw32/lib/libmsobmain.a
+++ b/x86_64-w64-mingw32/lib/libmsobmain.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsobshel.a b/x86_64-w64-mingw32/lib/libmsobshel.a
index 12fa0eb..471ff0d 100644
--- a/x86_64-w64-mingw32/lib/libmsobshel.a
+++ b/x86_64-w64-mingw32/lib/libmsobshel.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsobweb.a b/x86_64-w64-mingw32/lib/libmsobweb.a
index 7feaadf..db9d27a 100644
--- a/x86_64-w64-mingw32/lib/libmsobweb.a
+++ b/x86_64-w64-mingw32/lib/libmsobweb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsoe.a b/x86_64-w64-mingw32/lib/libmsoe.a
index 729e95a..db06597 100644
--- a/x86_64-w64-mingw32/lib/libmsoe.a
+++ b/x86_64-w64-mingw32/lib/libmsoe.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsoeacct.a b/x86_64-w64-mingw32/lib/libmsoeacct.a
index 53f9fea..a12ca1b 100644
--- a/x86_64-w64-mingw32/lib/libmsoeacct.a
+++ b/x86_64-w64-mingw32/lib/libmsoeacct.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsoert2.a b/x86_64-w64-mingw32/lib/libmsoert2.a
index 15a950f..79f6e7b 100644
--- a/x86_64-w64-mingw32/lib/libmsoert2.a
+++ b/x86_64-w64-mingw32/lib/libmsoert2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmspatcha.a b/x86_64-w64-mingw32/lib/libmspatcha.a
index 1244bda..216b9fa 100644
--- a/x86_64-w64-mingw32/lib/libmspatcha.a
+++ b/x86_64-w64-mingw32/lib/libmspatcha.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmspmsnsv.a b/x86_64-w64-mingw32/lib/libmspmsnsv.a
index 0a64a99..f76609b 100644
--- a/x86_64-w64-mingw32/lib/libmspmsnsv.a
+++ b/x86_64-w64-mingw32/lib/libmspmsnsv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsports.a b/x86_64-w64-mingw32/lib/libmsports.a
index d026f86..f1cf4cf 100644
--- a/x86_64-w64-mingw32/lib/libmsports.a
+++ b/x86_64-w64-mingw32/lib/libmsports.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsrating.a b/x86_64-w64-mingw32/lib/libmsrating.a
index 4efd0a1..5c10495 100644
--- a/x86_64-w64-mingw32/lib/libmsrating.a
+++ b/x86_64-w64-mingw32/lib/libmsrating.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsrle32.a b/x86_64-w64-mingw32/lib/libmsrle32.a
index 11101c4..b48f868 100644
--- a/x86_64-w64-mingw32/lib/libmsrle32.a
+++ b/x86_64-w64-mingw32/lib/libmsrle32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmssign32.a b/x86_64-w64-mingw32/lib/libmssign32.a
index bc37c3c..a6cb623 100644
--- a/x86_64-w64-mingw32/lib/libmssign32.a
+++ b/x86_64-w64-mingw32/lib/libmssign32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmssip32.a b/x86_64-w64-mingw32/lib/libmssip32.a
index d70986e..cc2736d 100644
--- a/x86_64-w64-mingw32/lib/libmssip32.a
+++ b/x86_64-w64-mingw32/lib/libmssip32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmstask.a b/x86_64-w64-mingw32/lib/libmstask.a
index 17982c2..bd45faf 100644
--- a/x86_64-w64-mingw32/lib/libmstask.a
+++ b/x86_64-w64-mingw32/lib/libmstask.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmstime.a b/x86_64-w64-mingw32/lib/libmstime.a
index 3c94b8b..4cff9e9 100644
--- a/x86_64-w64-mingw32/lib/libmstime.a
+++ b/x86_64-w64-mingw32/lib/libmstime.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmstlsapi.a b/x86_64-w64-mingw32/lib/libmstlsapi.a
index b5428c4..5933d46 100644
--- a/x86_64-w64-mingw32/lib/libmstlsapi.a
+++ b/x86_64-w64-mingw32/lib/libmstlsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmstscax.a b/x86_64-w64-mingw32/lib/libmstscax.a
index be66bb2..636050c 100644
--- a/x86_64-w64-mingw32/lib/libmstscax.a
+++ b/x86_64-w64-mingw32/lib/libmstscax.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsutb.a b/x86_64-w64-mingw32/lib/libmsutb.a
index 1983ff4..868fb8d 100644
--- a/x86_64-w64-mingw32/lib/libmsutb.a
+++ b/x86_64-w64-mingw32/lib/libmsutb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsv1_0.a b/x86_64-w64-mingw32/lib/libmsv1_0.a
index b3b0611..51e21e8 100644
--- a/x86_64-w64-mingw32/lib/libmsv1_0.a
+++ b/x86_64-w64-mingw32/lib/libmsv1_0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcirt.a b/x86_64-w64-mingw32/lib/libmsvcirt.a
index ef74162..d6facb5 100644
--- a/x86_64-w64-mingw32/lib/libmsvcirt.a
+++ b/x86_64-w64-mingw32/lib/libmsvcirt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcp60.a b/x86_64-w64-mingw32/lib/libmsvcp60.a
index 964aad2..bc53924 100644
--- a/x86_64-w64-mingw32/lib/libmsvcp60.a
+++ b/x86_64-w64-mingw32/lib/libmsvcp60.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr100.a b/x86_64-w64-mingw32/lib/libmsvcr100.a
index 024b191..a446820 100644
--- a/x86_64-w64-mingw32/lib/libmsvcr100.a
+++ b/x86_64-w64-mingw32/lib/libmsvcr100.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr110.a b/x86_64-w64-mingw32/lib/libmsvcr110.a
index 1a21ecc..384fdcd 100644
--- a/x86_64-w64-mingw32/lib/libmsvcr110.a
+++ b/x86_64-w64-mingw32/lib/libmsvcr110.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr120.a b/x86_64-w64-mingw32/lib/libmsvcr120.a
new file mode 100644
index 0000000..0fee78e
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/libmsvcr120.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr120d.a b/x86_64-w64-mingw32/lib/libmsvcr120d.a
new file mode 100644
index 0000000..dc69d5c
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/libmsvcr120d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr80.a b/x86_64-w64-mingw32/lib/libmsvcr80.a
index 5ebe870..1de33cf 100644
--- a/x86_64-w64-mingw32/lib/libmsvcr80.a
+++ b/x86_64-w64-mingw32/lib/libmsvcr80.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr90.a b/x86_64-w64-mingw32/lib/libmsvcr90.a
index 8ba0821..6b72a78 100644
--- a/x86_64-w64-mingw32/lib/libmsvcr90.a
+++ b/x86_64-w64-mingw32/lib/libmsvcr90.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcr90d.a b/x86_64-w64-mingw32/lib/libmsvcr90d.a
index 99ecd55..575367f 100644
--- a/x86_64-w64-mingw32/lib/libmsvcr90d.a
+++ b/x86_64-w64-mingw32/lib/libmsvcr90d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvcrt.a b/x86_64-w64-mingw32/lib/libmsvcrt.a
index bebeb49..38c0659 100644
--- a/x86_64-w64-mingw32/lib/libmsvcrt.a
+++ b/x86_64-w64-mingw32/lib/libmsvcrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvfw32.a b/x86_64-w64-mingw32/lib/libmsvfw32.a
index 2b9fdc5..e0b4b3c 100644
--- a/x86_64-w64-mingw32/lib/libmsvfw32.a
+++ b/x86_64-w64-mingw32/lib/libmsvfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvidc32.a b/x86_64-w64-mingw32/lib/libmsvidc32.a
index b4a080e..9092703 100644
--- a/x86_64-w64-mingw32/lib/libmsvidc32.a
+++ b/x86_64-w64-mingw32/lib/libmsvidc32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsvidctl.a b/x86_64-w64-mingw32/lib/libmsvidctl.a
index f86438f..33a58f9 100644
--- a/x86_64-w64-mingw32/lib/libmsvidctl.a
+++ b/x86_64-w64-mingw32/lib/libmsvidctl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsw3prt.a b/x86_64-w64-mingw32/lib/libmsw3prt.a
index 27ea7a3..79c4003 100644
--- a/x86_64-w64-mingw32/lib/libmsw3prt.a
+++ b/x86_64-w64-mingw32/lib/libmsw3prt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmswsock.a b/x86_64-w64-mingw32/lib/libmswsock.a
index e384db3..b9f89fb 100644
--- a/x86_64-w64-mingw32/lib/libmswsock.a
+++ b/x86_64-w64-mingw32/lib/libmswsock.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsxactps.a b/x86_64-w64-mingw32/lib/libmsxactps.a
index b1766d7..85d3c30 100644
--- a/x86_64-w64-mingw32/lib/libmsxactps.a
+++ b/x86_64-w64-mingw32/lib/libmsxactps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsxml3.a b/x86_64-w64-mingw32/lib/libmsxml3.a
index f51a5b8..272b465 100644
--- a/x86_64-w64-mingw32/lib/libmsxml3.a
+++ b/x86_64-w64-mingw32/lib/libmsxml3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsxs64.a b/x86_64-w64-mingw32/lib/libmsxs64.a
index c654b30..9ede4b7 100644
--- a/x86_64-w64-mingw32/lib/libmsxs64.a
+++ b/x86_64-w64-mingw32/lib/libmsxs64.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmsyuv.a b/x86_64-w64-mingw32/lib/libmsyuv.a
index 9f53cbb..48dfdaf 100644
--- a/x86_64-w64-mingw32/lib/libmsyuv.a
+++ b/x86_64-w64-mingw32/lib/libmsyuv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmtxclu.a b/x86_64-w64-mingw32/lib/libmtxclu.a
index 9db45d7..167cf2b 100644
--- a/x86_64-w64-mingw32/lib/libmtxclu.a
+++ b/x86_64-w64-mingw32/lib/libmtxclu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmtxdm.a b/x86_64-w64-mingw32/lib/libmtxdm.a
index 434bce0..b07f9f2 100644
--- a/x86_64-w64-mingw32/lib/libmtxdm.a
+++ b/x86_64-w64-mingw32/lib/libmtxdm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmtxex.a b/x86_64-w64-mingw32/lib/libmtxex.a
index 5ba42d1..e8aa30c 100644
--- a/x86_64-w64-mingw32/lib/libmtxex.a
+++ b/x86_64-w64-mingw32/lib/libmtxex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmtxoci.a b/x86_64-w64-mingw32/lib/libmtxoci.a
index a805743..cd760e3 100644
--- a/x86_64-w64-mingw32/lib/libmtxoci.a
+++ b/x86_64-w64-mingw32/lib/libmtxoci.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmycomput.a b/x86_64-w64-mingw32/lib/libmycomput.a
index 829e9de..1ca7ce6 100644
--- a/x86_64-w64-mingw32/lib/libmycomput.a
+++ b/x86_64-w64-mingw32/lib/libmycomput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libmydocs.a b/x86_64-w64-mingw32/lib/libmydocs.a
index eefaffb..7de9900 100644
--- a/x86_64-w64-mingw32/lib/libmydocs.a
+++ b/x86_64-w64-mingw32/lib/libmydocs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnarrhook.a b/x86_64-w64-mingw32/lib/libnarrhook.a
index 3884a2c..2356051 100644
--- a/x86_64-w64-mingw32/lib/libnarrhook.a
+++ b/x86_64-w64-mingw32/lib/libnarrhook.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libncobjapi.a b/x86_64-w64-mingw32/lib/libncobjapi.a
index c27beb3..4a6e5b9 100644
--- a/x86_64-w64-mingw32/lib/libncobjapi.a
+++ b/x86_64-w64-mingw32/lib/libncobjapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libncprov.a b/x86_64-w64-mingw32/lib/libncprov.a
index 733991d..2f6481d 100644
--- a/x86_64-w64-mingw32/lib/libncprov.a
+++ b/x86_64-w64-mingw32/lib/libncprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libncrypt.a b/x86_64-w64-mingw32/lib/libncrypt.a
index 61c7bfa..c7ffb4a 100644
--- a/x86_64-w64-mingw32/lib/libncrypt.a
+++ b/x86_64-w64-mingw32/lib/libncrypt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libncxpnt.a b/x86_64-w64-mingw32/lib/libncxpnt.a
index 8b4b055..e09751b 100644
--- a/x86_64-w64-mingw32/lib/libncxpnt.a
+++ b/x86_64-w64-mingw32/lib/libncxpnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnddeapi.a b/x86_64-w64-mingw32/lib/libnddeapi.a
index 63abaee..68d8b03 100644
--- a/x86_64-w64-mingw32/lib/libnddeapi.a
+++ b/x86_64-w64-mingw32/lib/libnddeapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnddenb32.a b/x86_64-w64-mingw32/lib/libnddenb32.a
index c48e839..319aa0b 100644
--- a/x86_64-w64-mingw32/lib/libnddenb32.a
+++ b/x86_64-w64-mingw32/lib/libnddenb32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libndfapi.a b/x86_64-w64-mingw32/lib/libndfapi.a
index 1d73a80..75c78d1 100644
--- a/x86_64-w64-mingw32/lib/libndfapi.a
+++ b/x86_64-w64-mingw32/lib/libndfapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libndis.a b/x86_64-w64-mingw32/lib/libndis.a
index 4df7131..7961987 100644
--- a/x86_64-w64-mingw32/lib/libndis.a
+++ b/x86_64-w64-mingw32/lib/libndis.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libndisnpp.a b/x86_64-w64-mingw32/lib/libndisnpp.a
index a65a157..b500262 100644
--- a/x86_64-w64-mingw32/lib/libndisnpp.a
+++ b/x86_64-w64-mingw32/lib/libndisnpp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetapi32.a b/x86_64-w64-mingw32/lib/libnetapi32.a
index 142a3d2..7876a33 100644
--- a/x86_64-w64-mingw32/lib/libnetapi32.a
+++ b/x86_64-w64-mingw32/lib/libnetapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetcfgx.a b/x86_64-w64-mingw32/lib/libnetcfgx.a
index 0d30e98..2c62356 100644
--- a/x86_64-w64-mingw32/lib/libnetcfgx.a
+++ b/x86_64-w64-mingw32/lib/libnetcfgx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetid.a b/x86_64-w64-mingw32/lib/libnetid.a
index bfadd26..ce22e48 100644
--- a/x86_64-w64-mingw32/lib/libnetid.a
+++ b/x86_64-w64-mingw32/lib/libnetid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetlogon.a b/x86_64-w64-mingw32/lib/libnetlogon.a
index 8550ce3..1b23144 100644
--- a/x86_64-w64-mingw32/lib/libnetlogon.a
+++ b/x86_64-w64-mingw32/lib/libnetlogon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetman.a b/x86_64-w64-mingw32/lib/libnetman.a
index 9de2441..638874e 100644
--- a/x86_64-w64-mingw32/lib/libnetman.a
+++ b/x86_64-w64-mingw32/lib/libnetman.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetoc.a b/x86_64-w64-mingw32/lib/libnetoc.a
index 102a0e2..d52b832 100644
--- a/x86_64-w64-mingw32/lib/libnetoc.a
+++ b/x86_64-w64-mingw32/lib/libnetoc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetplwiz.a b/x86_64-w64-mingw32/lib/libnetplwiz.a
index ae6d8a6..9a8fb8d 100644
--- a/x86_64-w64-mingw32/lib/libnetplwiz.a
+++ b/x86_64-w64-mingw32/lib/libnetplwiz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetrap.a b/x86_64-w64-mingw32/lib/libnetrap.a
index bc863ce..a8e2fc2 100644
--- a/x86_64-w64-mingw32/lib/libnetrap.a
+++ b/x86_64-w64-mingw32/lib/libnetrap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetshell.a b/x86_64-w64-mingw32/lib/libnetshell.a
index 013264e..e16a62a 100644
--- a/x86_64-w64-mingw32/lib/libnetshell.a
+++ b/x86_64-w64-mingw32/lib/libnetshell.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetui0.a b/x86_64-w64-mingw32/lib/libnetui0.a
index c94c170..371bb83 100644
--- a/x86_64-w64-mingw32/lib/libnetui0.a
+++ b/x86_64-w64-mingw32/lib/libnetui0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetui1.a b/x86_64-w64-mingw32/lib/libnetui1.a
index f0f6ac4..54b50e1 100644
--- a/x86_64-w64-mingw32/lib/libnetui1.a
+++ b/x86_64-w64-mingw32/lib/libnetui1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnetui2.a b/x86_64-w64-mingw32/lib/libnetui2.a
index 3560a7e..166a925 100644
--- a/x86_64-w64-mingw32/lib/libnetui2.a
+++ b/x86_64-w64-mingw32/lib/libnetui2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnewdev.a b/x86_64-w64-mingw32/lib/libnewdev.a
index e3c15bf..761f664 100644
--- a/x86_64-w64-mingw32/lib/libnewdev.a
+++ b/x86_64-w64-mingw32/lib/libnewdev.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnextlink.a b/x86_64-w64-mingw32/lib/libnextlink.a
index 65b1431..003c088 100644
--- a/x86_64-w64-mingw32/lib/libnextlink.a
+++ b/x86_64-w64-mingw32/lib/libnextlink.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnlhtml.a b/x86_64-w64-mingw32/lib/libnlhtml.a
index 234d905..bae7003 100644
--- a/x86_64-w64-mingw32/lib/libnlhtml.a
+++ b/x86_64-w64-mingw32/lib/libnlhtml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnntpadm.a b/x86_64-w64-mingw32/lib/libnntpadm.a
index 4066851..b0ab909 100644
--- a/x86_64-w64-mingw32/lib/libnntpadm.a
+++ b/x86_64-w64-mingw32/lib/libnntpadm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnntpapi.a b/x86_64-w64-mingw32/lib/libnntpapi.a
index d20bf2d..58ec7d9 100644
--- a/x86_64-w64-mingw32/lib/libnntpapi.a
+++ b/x86_64-w64-mingw32/lib/libnntpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnntpsnap.a b/x86_64-w64-mingw32/lib/libnntpsnap.a
index d9ecf40..5888942 100644
--- a/x86_64-w64-mingw32/lib/libnntpsnap.a
+++ b/x86_64-w64-mingw32/lib/libnntpsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnormaliz.a b/x86_64-w64-mingw32/lib/libnormaliz.a
index 69bcb9e..6615352 100644
--- a/x86_64-w64-mingw32/lib/libnormaliz.a
+++ b/x86_64-w64-mingw32/lib/libnormaliz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnpptools.a b/x86_64-w64-mingw32/lib/libnpptools.a
index 464df14..79ad2a6 100644
--- a/x86_64-w64-mingw32/lib/libnpptools.a
+++ b/x86_64-w64-mingw32/lib/libnpptools.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnshipsec.a b/x86_64-w64-mingw32/lib/libnshipsec.a
index 272cabf..bf16ecc 100644
--- a/x86_64-w64-mingw32/lib/libnshipsec.a
+++ b/x86_64-w64-mingw32/lib/libnshipsec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntdll.a b/x86_64-w64-mingw32/lib/libntdll.a
index 8e497ce..56de4bf 100644
--- a/x86_64-w64-mingw32/lib/libntdll.a
+++ b/x86_64-w64-mingw32/lib/libntdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntdsapi.a b/x86_64-w64-mingw32/lib/libntdsapi.a
index b3d353a..a5c1ba1 100644
--- a/x86_64-w64-mingw32/lib/libntdsapi.a
+++ b/x86_64-w64-mingw32/lib/libntdsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntdsbcli.a b/x86_64-w64-mingw32/lib/libntdsbcli.a
index 8eb01df..c34cfca 100644
--- a/x86_64-w64-mingw32/lib/libntdsbcli.a
+++ b/x86_64-w64-mingw32/lib/libntdsbcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntevt.a b/x86_64-w64-mingw32/lib/libntevt.a
index a09f9b1..8435792 100644
--- a/x86_64-w64-mingw32/lib/libntevt.a
+++ b/x86_64-w64-mingw32/lib/libntevt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntfsdrv.a b/x86_64-w64-mingw32/lib/libntfsdrv.a
index 24b7fb1..cf1148d 100644
--- a/x86_64-w64-mingw32/lib/libntfsdrv.a
+++ b/x86_64-w64-mingw32/lib/libntfsdrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntlanman.a b/x86_64-w64-mingw32/lib/libntlanman.a
index d0170ab..dc9b081 100644
--- a/x86_64-w64-mingw32/lib/libntlanman.a
+++ b/x86_64-w64-mingw32/lib/libntlanman.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntlanui.a b/x86_64-w64-mingw32/lib/libntlanui.a
index c38649d..3325c6a 100644
--- a/x86_64-w64-mingw32/lib/libntlanui.a
+++ b/x86_64-w64-mingw32/lib/libntlanui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntlanui2.a b/x86_64-w64-mingw32/lib/libntlanui2.a
index 90e882c..07d3288 100644
--- a/x86_64-w64-mingw32/lib/libntlanui2.a
+++ b/x86_64-w64-mingw32/lib/libntlanui2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntlsapi.a b/x86_64-w64-mingw32/lib/libntlsapi.a
index afa9eda..b5bec4b 100644
--- a/x86_64-w64-mingw32/lib/libntlsapi.a
+++ b/x86_64-w64-mingw32/lib/libntlsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmarta.a b/x86_64-w64-mingw32/lib/libntmarta.a
index aa4eb6e..7cf1df2 100644
--- a/x86_64-w64-mingw32/lib/libntmarta.a
+++ b/x86_64-w64-mingw32/lib/libntmarta.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmsapi.a b/x86_64-w64-mingw32/lib/libntmsapi.a
index 9b3236f..12c1a1e 100644
--- a/x86_64-w64-mingw32/lib/libntmsapi.a
+++ b/x86_64-w64-mingw32/lib/libntmsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmsdba.a b/x86_64-w64-mingw32/lib/libntmsdba.a
index cba5e1c..88fddd5 100644
--- a/x86_64-w64-mingw32/lib/libntmsdba.a
+++ b/x86_64-w64-mingw32/lib/libntmsdba.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmsevt.a b/x86_64-w64-mingw32/lib/libntmsevt.a
index 46ae637..a520f84 100644
--- a/x86_64-w64-mingw32/lib/libntmsevt.a
+++ b/x86_64-w64-mingw32/lib/libntmsevt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmsmgr.a b/x86_64-w64-mingw32/lib/libntmsmgr.a
index 0b0b452..ce06524 100644
--- a/x86_64-w64-mingw32/lib/libntmsmgr.a
+++ b/x86_64-w64-mingw32/lib/libntmsmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntmssvc.a b/x86_64-w64-mingw32/lib/libntmssvc.a
index 1172183..ced7a56 100644
--- a/x86_64-w64-mingw32/lib/libntmssvc.a
+++ b/x86_64-w64-mingw32/lib/libntmssvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntoc.a b/x86_64-w64-mingw32/lib/libntoc.a
index 9bc5aad..721e570 100644
--- a/x86_64-w64-mingw32/lib/libntoc.a
+++ b/x86_64-w64-mingw32/lib/libntoc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntoskrnl.a b/x86_64-w64-mingw32/lib/libntoskrnl.a
index 073c686..0294237 100644
--- a/x86_64-w64-mingw32/lib/libntoskrnl.a
+++ b/x86_64-w64-mingw32/lib/libntoskrnl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntprint.a b/x86_64-w64-mingw32/lib/libntprint.a
index 831a1ad..e0c0dd0 100644
--- a/x86_64-w64-mingw32/lib/libntprint.a
+++ b/x86_64-w64-mingw32/lib/libntprint.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntshrui.a b/x86_64-w64-mingw32/lib/libntshrui.a
index 65b6c2a..c7dc616 100644
--- a/x86_64-w64-mingw32/lib/libntshrui.a
+++ b/x86_64-w64-mingw32/lib/libntshrui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libntvdm64.a b/x86_64-w64-mingw32/lib/libntvdm64.a
index 73a20f1..0a10ad6 100644
--- a/x86_64-w64-mingw32/lib/libntvdm64.a
+++ b/x86_64-w64-mingw32/lib/libntvdm64.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libnwprovau.a b/x86_64-w64-mingw32/lib/libnwprovau.a
index eae7b19..ca5ef38 100644
--- a/x86_64-w64-mingw32/lib/libnwprovau.a
+++ b/x86_64-w64-mingw32/lib/libnwprovau.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboakley.a b/x86_64-w64-mingw32/lib/liboakley.a
index 9599c09..f580670 100644
--- a/x86_64-w64-mingw32/lib/liboakley.a
+++ b/x86_64-w64-mingw32/lib/liboakley.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libobjsel.a b/x86_64-w64-mingw32/lib/libobjsel.a
index 33a135a..6e7c8e0 100644
--- a/x86_64-w64-mingw32/lib/libobjsel.a
+++ b/x86_64-w64-mingw32/lib/libobjsel.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboccache.a b/x86_64-w64-mingw32/lib/liboccache.a
index 56700a4..f92f641 100644
--- a/x86_64-w64-mingw32/lib/liboccache.a
+++ b/x86_64-w64-mingw32/lib/liboccache.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libocgen.a b/x86_64-w64-mingw32/lib/libocgen.a
index bec33c5..a8a4859 100644
--- a/x86_64-w64-mingw32/lib/libocgen.a
+++ b/x86_64-w64-mingw32/lib/libocgen.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libocmanage.a b/x86_64-w64-mingw32/lib/libocmanage.a
index 55539f4..ba9ce76 100644
--- a/x86_64-w64-mingw32/lib/libocmanage.a
+++ b/x86_64-w64-mingw32/lib/libocmanage.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libocmsn.a b/x86_64-w64-mingw32/lib/libocmsn.a
index 5b2ffcf..0646efc 100644
--- a/x86_64-w64-mingw32/lib/libocmsn.a
+++ b/x86_64-w64-mingw32/lib/libocmsn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbc32.a b/x86_64-w64-mingw32/lib/libodbc32.a
index cd0dfbe..04b75c0 100644
--- a/x86_64-w64-mingw32/lib/libodbc32.a
+++ b/x86_64-w64-mingw32/lib/libodbc32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbc32gt.a b/x86_64-w64-mingw32/lib/libodbc32gt.a
index cbd505c..3257ebf 100644
--- a/x86_64-w64-mingw32/lib/libodbc32gt.a
+++ b/x86_64-w64-mingw32/lib/libodbc32gt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbcbcp.a b/x86_64-w64-mingw32/lib/libodbcbcp.a
index 216f03a..e9822e7 100644
--- a/x86_64-w64-mingw32/lib/libodbcbcp.a
+++ b/x86_64-w64-mingw32/lib/libodbcbcp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbcconf.a b/x86_64-w64-mingw32/lib/libodbcconf.a
index 03e487e..d15ab7b 100644
--- a/x86_64-w64-mingw32/lib/libodbcconf.a
+++ b/x86_64-w64-mingw32/lib/libodbcconf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbccp32.a b/x86_64-w64-mingw32/lib/libodbccp32.a
index f30353b..c492495 100644
--- a/x86_64-w64-mingw32/lib/libodbccp32.a
+++ b/x86_64-w64-mingw32/lib/libodbccp32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbccr32.a b/x86_64-w64-mingw32/lib/libodbccr32.a
index 4bd76c3..1573c6d 100644
--- a/x86_64-w64-mingw32/lib/libodbccr32.a
+++ b/x86_64-w64-mingw32/lib/libodbccr32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbccu32.a b/x86_64-w64-mingw32/lib/libodbccu32.a
index d2c6785..e1f197f 100644
--- a/x86_64-w64-mingw32/lib/libodbccu32.a
+++ b/x86_64-w64-mingw32/lib/libodbccu32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libodbctrac.a b/x86_64-w64-mingw32/lib/libodbctrac.a
index 7f19c72..5e9849b 100644
--- a/x86_64-w64-mingw32/lib/libodbctrac.a
+++ b/x86_64-w64-mingw32/lib/libodbctrac.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboeimport.a b/x86_64-w64-mingw32/lib/liboeimport.a
index 7cc2acc..10e4f1c 100644
--- a/x86_64-w64-mingw32/lib/liboeimport.a
+++ b/x86_64-w64-mingw32/lib/liboeimport.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboemiglib.a b/x86_64-w64-mingw32/lib/liboemiglib.a
index e4f3388..dacf20d 100644
--- a/x86_64-w64-mingw32/lib/liboemiglib.a
+++ b/x86_64-w64-mingw32/lib/liboemiglib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libofffilt.a b/x86_64-w64-mingw32/lib/libofffilt.a
index cc6df18..c49cc00 100644
--- a/x86_64-w64-mingw32/lib/libofffilt.a
+++ b/x86_64-w64-mingw32/lib/libofffilt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libole32.a b/x86_64-w64-mingw32/lib/libole32.a
index 661fe27..3617ae2 100644
--- a/x86_64-w64-mingw32/lib/libole32.a
+++ b/x86_64-w64-mingw32/lib/libole32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboleacc.a b/x86_64-w64-mingw32/lib/liboleacc.a
index 851328f..57152af 100644
--- a/x86_64-w64-mingw32/lib/liboleacc.a
+++ b/x86_64-w64-mingw32/lib/liboleacc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboleaut32.a b/x86_64-w64-mingw32/lib/liboleaut32.a
index 81e81f6..805c97c 100644
--- a/x86_64-w64-mingw32/lib/liboleaut32.a
+++ b/x86_64-w64-mingw32/lib/liboleaut32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libolecli32.a b/x86_64-w64-mingw32/lib/libolecli32.a
index b24f0eb..e515ea5 100644
--- a/x86_64-w64-mingw32/lib/libolecli32.a
+++ b/x86_64-w64-mingw32/lib/libolecli32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libolecnv32.a b/x86_64-w64-mingw32/lib/libolecnv32.a
index 7321c80..b18ed57 100644
--- a/x86_64-w64-mingw32/lib/libolecnv32.a
+++ b/x86_64-w64-mingw32/lib/libolecnv32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboledb32.a b/x86_64-w64-mingw32/lib/liboledb32.a
index ced53d5..f472877 100644
--- a/x86_64-w64-mingw32/lib/liboledb32.a
+++ b/x86_64-w64-mingw32/lib/liboledb32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboledb32r.a b/x86_64-w64-mingw32/lib/liboledb32r.a
index a7e775a..3c7f9ab 100644
--- a/x86_64-w64-mingw32/lib/liboledb32r.a
+++ b/x86_64-w64-mingw32/lib/liboledb32r.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboledlg.a b/x86_64-w64-mingw32/lib/liboledlg.a
index 012d279..6bcaae9 100644
--- a/x86_64-w64-mingw32/lib/liboledlg.a
+++ b/x86_64-w64-mingw32/lib/liboledlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liboleprn.a b/x86_64-w64-mingw32/lib/liboleprn.a
index 29e4522..8e584fd 100644
--- a/x86_64-w64-mingw32/lib/liboleprn.a
+++ b/x86_64-w64-mingw32/lib/liboleprn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libolesvr32.a b/x86_64-w64-mingw32/lib/libolesvr32.a
index c5847d8..a48a8e1 100644
--- a/x86_64-w64-mingw32/lib/libolesvr32.a
+++ b/x86_64-w64-mingw32/lib/libolesvr32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libopengl32.a b/x86_64-w64-mingw32/lib/libopengl32.a
index 467d985..b8208a1 100644
--- a/x86_64-w64-mingw32/lib/libopengl32.a
+++ b/x86_64-w64-mingw32/lib/libopengl32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libosuninst.a b/x86_64-w64-mingw32/lib/libosuninst.a
index b794b6d..4f7affd 100644
--- a/x86_64-w64-mingw32/lib/libosuninst.a
+++ b/x86_64-w64-mingw32/lib/libosuninst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libovprintmondll.a b/x86_64-w64-mingw32/lib/libovprintmondll.a
index 186b05d..c3cd279 100644
--- a/x86_64-w64-mingw32/lib/libovprintmondll.a
+++ b/x86_64-w64-mingw32/lib/libovprintmondll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libp2p.a b/x86_64-w64-mingw32/lib/libp2p.a
index 206284d..a703405 100644
--- a/x86_64-w64-mingw32/lib/libp2p.a
+++ b/x86_64-w64-mingw32/lib/libp2p.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libp2pcollab.a b/x86_64-w64-mingw32/lib/libp2pcollab.a
index e76918a..5bd3f07 100644
--- a/x86_64-w64-mingw32/lib/libp2pcollab.a
+++ b/x86_64-w64-mingw32/lib/libp2pcollab.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libp2pgraph.a b/x86_64-w64-mingw32/lib/libp2pgraph.a
index 436cd4c..d7481b5 100644
--- a/x86_64-w64-mingw32/lib/libp2pgraph.a
+++ b/x86_64-w64-mingw32/lib/libp2pgraph.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpanmap.a b/x86_64-w64-mingw32/lib/libpanmap.a
index 3294f9c..1419702 100644
--- a/x86_64-w64-mingw32/lib/libpanmap.a
+++ b/x86_64-w64-mingw32/lib/libpanmap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpautoenr.a b/x86_64-w64-mingw32/lib/libpautoenr.a
index cbfcea2..53de452 100644
--- a/x86_64-w64-mingw32/lib/libpautoenr.a
+++ b/x86_64-w64-mingw32/lib/libpautoenr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpchshell.a b/x86_64-w64-mingw32/lib/libpchshell.a
index d5ea4bc..cfda216 100644
--- a/x86_64-w64-mingw32/lib/libpchshell.a
+++ b/x86_64-w64-mingw32/lib/libpchshell.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpchsvc.a b/x86_64-w64-mingw32/lib/libpchsvc.a
index a1361cb..c0ecafb 100644
--- a/x86_64-w64-mingw32/lib/libpchsvc.a
+++ b/x86_64-w64-mingw32/lib/libpchsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpcwum.a b/x86_64-w64-mingw32/lib/libpcwum.a
index f3102c1..2e82cc5 100644
--- a/x86_64-w64-mingw32/lib/libpcwum.a
+++ b/x86_64-w64-mingw32/lib/libpcwum.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpdh.a b/x86_64-w64-mingw32/lib/libpdh.a
index f46a80b..ffa1d0a 100644
--- a/x86_64-w64-mingw32/lib/libpdh.a
+++ b/x86_64-w64-mingw32/lib/libpdh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfctrs.a b/x86_64-w64-mingw32/lib/libperfctrs.a
index d2888f3..7c51ef9 100644
--- a/x86_64-w64-mingw32/lib/libperfctrs.a
+++ b/x86_64-w64-mingw32/lib/libperfctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfdisk.a b/x86_64-w64-mingw32/lib/libperfdisk.a
index d964adc..b3eb2c0 100644
--- a/x86_64-w64-mingw32/lib/libperfdisk.a
+++ b/x86_64-w64-mingw32/lib/libperfdisk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfnet.a b/x86_64-w64-mingw32/lib/libperfnet.a
index 6fd5e80..2d8b730 100644
--- a/x86_64-w64-mingw32/lib/libperfnet.a
+++ b/x86_64-w64-mingw32/lib/libperfnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfos.a b/x86_64-w64-mingw32/lib/libperfos.a
index f17c5da..5895f7f 100644
--- a/x86_64-w64-mingw32/lib/libperfos.a
+++ b/x86_64-w64-mingw32/lib/libperfos.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfproc.a b/x86_64-w64-mingw32/lib/libperfproc.a
index 1567135..06dd312 100644
--- a/x86_64-w64-mingw32/lib/libperfproc.a
+++ b/x86_64-w64-mingw32/lib/libperfproc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libperfts.a b/x86_64-w64-mingw32/lib/libperfts.a
index 217a0e2..86fca00 100644
--- a/x86_64-w64-mingw32/lib/libperfts.a
+++ b/x86_64-w64-mingw32/lib/libperfts.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libphotowiz.a b/x86_64-w64-mingw32/lib/libphotowiz.a
index efa3033..4748505 100644
--- a/x86_64-w64-mingw32/lib/libphotowiz.a
+++ b/x86_64-w64-mingw32/lib/libphotowiz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpid.a b/x86_64-w64-mingw32/lib/libpid.a
index 0199814..d5a2f37 100644
--- a/x86_64-w64-mingw32/lib/libpid.a
+++ b/x86_64-w64-mingw32/lib/libpid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpidgen.a b/x86_64-w64-mingw32/lib/libpidgen.a
index 47a413a..6306d32 100644
--- a/x86_64-w64-mingw32/lib/libpidgen.a
+++ b/x86_64-w64-mingw32/lib/libpidgen.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpintlcsa.a b/x86_64-w64-mingw32/lib/libpintlcsa.a
index c7fbb31..891abca 100644
--- a/x86_64-w64-mingw32/lib/libpintlcsa.a
+++ b/x86_64-w64-mingw32/lib/libpintlcsa.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpintlcsd.a b/x86_64-w64-mingw32/lib/libpintlcsd.a
index d6f0e71..2177de6 100644
--- a/x86_64-w64-mingw32/lib/libpintlcsd.a
+++ b/x86_64-w64-mingw32/lib/libpintlcsd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpjlmon.a b/x86_64-w64-mingw32/lib/libpjlmon.a
index 718ca38..9b0df03 100644
--- a/x86_64-w64-mingw32/lib/libpjlmon.a
+++ b/x86_64-w64-mingw32/lib/libpjlmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpngfilt.a b/x86_64-w64-mingw32/lib/libpngfilt.a
index d07d249..31bbf77 100644
--- a/x86_64-w64-mingw32/lib/libpngfilt.a
+++ b/x86_64-w64-mingw32/lib/libpngfilt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpolicman.a b/x86_64-w64-mingw32/lib/libpolicman.a
index 07be70c..9e7830f 100644
--- a/x86_64-w64-mingw32/lib/libpolicman.a
+++ b/x86_64-w64-mingw32/lib/libpolicman.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpolstore.a b/x86_64-w64-mingw32/lib/libpolstore.a
index 5a28a45..9a253bd 100644
--- a/x86_64-w64-mingw32/lib/libpolstore.a
+++ b/x86_64-w64-mingw32/lib/libpolstore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libportabledeviceguids.a b/x86_64-w64-mingw32/lib/libportabledeviceguids.a
index 1402438..859441e 100644
--- a/x86_64-w64-mingw32/lib/libportabledeviceguids.a
+++ b/x86_64-w64-mingw32/lib/libportabledeviceguids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpowrprof.a b/x86_64-w64-mingw32/lib/libpowrprof.a
index 72eb390..9a6514e 100644
--- a/x86_64-w64-mingw32/lib/libpowrprof.a
+++ b/x86_64-w64-mingw32/lib/libpowrprof.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libprintui.a b/x86_64-w64-mingw32/lib/libprintui.a
index da4aa4d..35cc084 100644
--- a/x86_64-w64-mingw32/lib/libprintui.a
+++ b/x86_64-w64-mingw32/lib/libprintui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libprofmap.a b/x86_64-w64-mingw32/lib/libprofmap.a
index b120107..d080f7c 100644
--- a/x86_64-w64-mingw32/lib/libprofmap.a
+++ b/x86_64-w64-mingw32/lib/libprofmap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libprovthrd.a b/x86_64-w64-mingw32/lib/libprovthrd.a
index da0a035..3201c83 100644
--- a/x86_64-w64-mingw32/lib/libprovthrd.a
+++ b/x86_64-w64-mingw32/lib/libprovthrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpsapi.a b/x86_64-w64-mingw32/lib/libpsapi.a
index b705fb1..3ebc90e 100644
--- a/x86_64-w64-mingw32/lib/libpsapi.a
+++ b/x86_64-w64-mingw32/lib/libpsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpsbase.a b/x86_64-w64-mingw32/lib/libpsbase.a
index b963693..28c9cf8 100644
--- a/x86_64-w64-mingw32/lib/libpsbase.a
+++ b/x86_64-w64-mingw32/lib/libpsbase.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpschdprf.a b/x86_64-w64-mingw32/lib/libpschdprf.a
index 0902c61..3de2a00 100644
--- a/x86_64-w64-mingw32/lib/libpschdprf.a
+++ b/x86_64-w64-mingw32/lib/libpschdprf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpsnppagn.a b/x86_64-w64-mingw32/lib/libpsnppagn.a
index 5f1e8c4..4b5617c 100644
--- a/x86_64-w64-mingw32/lib/libpsnppagn.a
+++ b/x86_64-w64-mingw32/lib/libpsnppagn.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpstorec.a b/x86_64-w64-mingw32/lib/libpstorec.a
index 97e4156..1b5c0c3 100644
--- a/x86_64-w64-mingw32/lib/libpstorec.a
+++ b/x86_64-w64-mingw32/lib/libpstorec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpstorsvc.a b/x86_64-w64-mingw32/lib/libpstorsvc.a
index d06aad7..1936b4d 100644
--- a/x86_64-w64-mingw32/lib/libpstorsvc.a
+++ b/x86_64-w64-mingw32/lib/libpstorsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpthread.a b/x86_64-w64-mingw32/lib/libpthread.a
index 77d7159..0190720 100644
--- a/x86_64-w64-mingw32/lib/libpthread.a
+++ b/x86_64-w64-mingw32/lib/libpthread.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libpthread.dll.a b/x86_64-w64-mingw32/lib/libpthread.dll.a
index 6a78a72..ad7eeff 100644
--- a/x86_64-w64-mingw32/lib/libpthread.dll.a
+++ b/x86_64-w64-mingw32/lib/libpthread.dll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqasf.a b/x86_64-w64-mingw32/lib/libqasf.a
index 5ac1f72..96debaf 100644
--- a/x86_64-w64-mingw32/lib/libqasf.a
+++ b/x86_64-w64-mingw32/lib/libqasf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqcap.a b/x86_64-w64-mingw32/lib/libqcap.a
index 25f642b..c76f712 100644
--- a/x86_64-w64-mingw32/lib/libqcap.a
+++ b/x86_64-w64-mingw32/lib/libqcap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqdv.a b/x86_64-w64-mingw32/lib/libqdv.a
index c74207f..7f29915 100644
--- a/x86_64-w64-mingw32/lib/libqdv.a
+++ b/x86_64-w64-mingw32/lib/libqdv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqdvd.a b/x86_64-w64-mingw32/lib/libqdvd.a
index efdf37d..e7baea7 100644
--- a/x86_64-w64-mingw32/lib/libqdvd.a
+++ b/x86_64-w64-mingw32/lib/libqdvd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqedit.a b/x86_64-w64-mingw32/lib/libqedit.a
index 12200f7..3d2e66f 100644
--- a/x86_64-w64-mingw32/lib/libqedit.a
+++ b/x86_64-w64-mingw32/lib/libqedit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqmgr.a b/x86_64-w64-mingw32/lib/libqmgr.a
index ebe0687..e9abef8 100644
--- a/x86_64-w64-mingw32/lib/libqmgr.a
+++ b/x86_64-w64-mingw32/lib/libqmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqmgrprxy.a b/x86_64-w64-mingw32/lib/libqmgrprxy.a
index 5724b04..be31da0 100644
--- a/x86_64-w64-mingw32/lib/libqmgrprxy.a
+++ b/x86_64-w64-mingw32/lib/libqmgrprxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqosname.a b/x86_64-w64-mingw32/lib/libqosname.a
index 431ee29..283aeac 100644
--- a/x86_64-w64-mingw32/lib/libqosname.a
+++ b/x86_64-w64-mingw32/lib/libqosname.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libquadmath.a b/x86_64-w64-mingw32/lib/libquadmath.a
index 5e253b0..a126980 100644
--- a/x86_64-w64-mingw32/lib/libquadmath.a
+++ b/x86_64-w64-mingw32/lib/libquadmath.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libquartz.a b/x86_64-w64-mingw32/lib/libquartz.a
index f20ea2e..fe02351 100644
--- a/x86_64-w64-mingw32/lib/libquartz.a
+++ b/x86_64-w64-mingw32/lib/libquartz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libquery.a b/x86_64-w64-mingw32/lib/libquery.a
index d28dc3b..0056388 100644
--- a/x86_64-w64-mingw32/lib/libquery.a
+++ b/x86_64-w64-mingw32/lib/libquery.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqutil.a b/x86_64-w64-mingw32/lib/libqutil.a
index 8e6b89c..430d6d1 100644
--- a/x86_64-w64-mingw32/lib/libqutil.a
+++ b/x86_64-w64-mingw32/lib/libqutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libqwave.a b/x86_64-w64-mingw32/lib/libqwave.a
index 2ebffe1..4fb5af0 100644
--- a/x86_64-w64-mingw32/lib/libqwave.a
+++ b/x86_64-w64-mingw32/lib/libqwave.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libracpldlg.a b/x86_64-w64-mingw32/lib/libracpldlg.a
index edf2c52..f228ea6 100644
--- a/x86_64-w64-mingw32/lib/libracpldlg.a
+++ b/x86_64-w64-mingw32/lib/libracpldlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasadhlp.a b/x86_64-w64-mingw32/lib/librasadhlp.a
index cec5648..1875c97 100644
--- a/x86_64-w64-mingw32/lib/librasadhlp.a
+++ b/x86_64-w64-mingw32/lib/librasadhlp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasapi32.a b/x86_64-w64-mingw32/lib/librasapi32.a
index e3ceff2..067e707 100644
--- a/x86_64-w64-mingw32/lib/librasapi32.a
+++ b/x86_64-w64-mingw32/lib/librasapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasauto.a b/x86_64-w64-mingw32/lib/librasauto.a
index 121fda0..629dc5c 100644
--- a/x86_64-w64-mingw32/lib/librasauto.a
+++ b/x86_64-w64-mingw32/lib/librasauto.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libraschap.a b/x86_64-w64-mingw32/lib/libraschap.a
index f0744dd..7bb9bb2 100644
--- a/x86_64-w64-mingw32/lib/libraschap.a
+++ b/x86_64-w64-mingw32/lib/libraschap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasctrs.a b/x86_64-w64-mingw32/lib/librasctrs.a
index d431f17..a3e4845 100644
--- a/x86_64-w64-mingw32/lib/librasctrs.a
+++ b/x86_64-w64-mingw32/lib/librasctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasdlg.a b/x86_64-w64-mingw32/lib/librasdlg.a
index e990c62..cf080e1 100644
--- a/x86_64-w64-mingw32/lib/librasdlg.a
+++ b/x86_64-w64-mingw32/lib/librasdlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasman.a b/x86_64-w64-mingw32/lib/librasman.a
index e680f41..624dfe1 100644
--- a/x86_64-w64-mingw32/lib/librasman.a
+++ b/x86_64-w64-mingw32/lib/librasman.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasmans.a b/x86_64-w64-mingw32/lib/librasmans.a
index c31829e..8b1505e 100644
--- a/x86_64-w64-mingw32/lib/librasmans.a
+++ b/x86_64-w64-mingw32/lib/librasmans.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasmontr.a b/x86_64-w64-mingw32/lib/librasmontr.a
index f7e4533..05b2f42 100644
--- a/x86_64-w64-mingw32/lib/librasmontr.a
+++ b/x86_64-w64-mingw32/lib/librasmontr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasmxs.a b/x86_64-w64-mingw32/lib/librasmxs.a
index d9ba48b..19aecf1 100644
--- a/x86_64-w64-mingw32/lib/librasmxs.a
+++ b/x86_64-w64-mingw32/lib/librasmxs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasppp.a b/x86_64-w64-mingw32/lib/librasppp.a
index 5596f46..2e36f3e 100644
--- a/x86_64-w64-mingw32/lib/librasppp.a
+++ b/x86_64-w64-mingw32/lib/librasppp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasrad.a b/x86_64-w64-mingw32/lib/librasrad.a
index 41ee4be..7fec771 100644
--- a/x86_64-w64-mingw32/lib/librasrad.a
+++ b/x86_64-w64-mingw32/lib/librasrad.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librassapi.a b/x86_64-w64-mingw32/lib/librassapi.a
index f1ae132..a436219 100644
--- a/x86_64-w64-mingw32/lib/librassapi.a
+++ b/x86_64-w64-mingw32/lib/librassapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librasser.a b/x86_64-w64-mingw32/lib/librasser.a
index d240da9..4cdfe8f 100644
--- a/x86_64-w64-mingw32/lib/librasser.a
+++ b/x86_64-w64-mingw32/lib/librasser.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librastapi.a b/x86_64-w64-mingw32/lib/librastapi.a
index 0c71ee2..6dbf030 100644
--- a/x86_64-w64-mingw32/lib/librastapi.a
+++ b/x86_64-w64-mingw32/lib/librastapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librastls.a b/x86_64-w64-mingw32/lib/librastls.a
index 683672f..06a0f48 100644
--- a/x86_64-w64-mingw32/lib/librastls.a
+++ b/x86_64-w64-mingw32/lib/librastls.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librcbdyctl.a b/x86_64-w64-mingw32/lib/librcbdyctl.a
index ee19345..aab22b2 100644
--- a/x86_64-w64-mingw32/lib/librcbdyctl.a
+++ b/x86_64-w64-mingw32/lib/librcbdyctl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librdchost.a b/x86_64-w64-mingw32/lib/librdchost.a
index f166f9e..7f1cd19 100644
--- a/x86_64-w64-mingw32/lib/librdchost.a
+++ b/x86_64-w64-mingw32/lib/librdchost.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librdpcfgex.a b/x86_64-w64-mingw32/lib/librdpcfgex.a
index 31500ec..23805ae 100644
--- a/x86_64-w64-mingw32/lib/librdpcfgex.a
+++ b/x86_64-w64-mingw32/lib/librdpcfgex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librdpsnd.a b/x86_64-w64-mingw32/lib/librdpsnd.a
index bb20330..a49c959 100644
--- a/x86_64-w64-mingw32/lib/librdpsnd.a
+++ b/x86_64-w64-mingw32/lib/librdpsnd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librdpwsx.a b/x86_64-w64-mingw32/lib/librdpwsx.a
index 7d4578c..c13b3aa 100644
--- a/x86_64-w64-mingw32/lib/librdpwsx.a
+++ b/x86_64-w64-mingw32/lib/librdpwsx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libregapi.a b/x86_64-w64-mingw32/lib/libregapi.a
index 8d169eb..ee18819 100644
--- a/x86_64-w64-mingw32/lib/libregapi.a
+++ b/x86_64-w64-mingw32/lib/libregapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libregsvc.a b/x86_64-w64-mingw32/lib/libregsvc.a
index 817d40c..219640f 100644
--- a/x86_64-w64-mingw32/lib/libregsvc.a
+++ b/x86_64-w64-mingw32/lib/libregsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libregwizc.a b/x86_64-w64-mingw32/lib/libregwizc.a
index aaf020c..1b6625e 100644
--- a/x86_64-w64-mingw32/lib/libregwizc.a
+++ b/x86_64-w64-mingw32/lib/libregwizc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libremotepg.a b/x86_64-w64-mingw32/lib/libremotepg.a
index 4255ce6..a29044c 100644
--- a/x86_64-w64-mingw32/lib/libremotepg.a
+++ b/x86_64-w64-mingw32/lib/libremotepg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librend.a b/x86_64-w64-mingw32/lib/librend.a
index 1f37e99..d6343c9 100644
--- a/x86_64-w64-mingw32/lib/librend.a
+++ b/x86_64-w64-mingw32/lib/librend.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librepdrvfs.a b/x86_64-w64-mingw32/lib/librepdrvfs.a
index ea2d6b5..d058b8a 100644
--- a/x86_64-w64-mingw32/lib/librepdrvfs.a
+++ b/x86_64-w64-mingw32/lib/librepdrvfs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libresutil.a b/x86_64-w64-mingw32/lib/libresutil.a
index 75c0bb5..9b8dbaa 100644
--- a/x86_64-w64-mingw32/lib/libresutil.a
+++ b/x86_64-w64-mingw32/lib/libresutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libresutils.a b/x86_64-w64-mingw32/lib/libresutils.a
index acfa189..c61261f 100644
--- a/x86_64-w64-mingw32/lib/libresutils.a
+++ b/x86_64-w64-mingw32/lib/libresutils.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libriched20.a b/x86_64-w64-mingw32/lib/libriched20.a
index cae40e6..db758f9 100644
--- a/x86_64-w64-mingw32/lib/libriched20.a
+++ b/x86_64-w64-mingw32/lib/libriched20.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librnr20.a b/x86_64-w64-mingw32/lib/librnr20.a
index 2e3ec12..8a99cfb 100644
--- a/x86_64-w64-mingw32/lib/librnr20.a
+++ b/x86_64-w64-mingw32/lib/librnr20.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libroutetab.a b/x86_64-w64-mingw32/lib/libroutetab.a
index 2699eaf..296df74 100644
--- a/x86_64-w64-mingw32/lib/libroutetab.a
+++ b/x86_64-w64-mingw32/lib/libroutetab.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcdiag.a b/x86_64-w64-mingw32/lib/librpcdiag.a
index 5a6344c..c058b74 100644
--- a/x86_64-w64-mingw32/lib/librpcdiag.a
+++ b/x86_64-w64-mingw32/lib/librpcdiag.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpchttp.a b/x86_64-w64-mingw32/lib/librpchttp.a
index 9822380..595c403 100644
--- a/x86_64-w64-mingw32/lib/librpchttp.a
+++ b/x86_64-w64-mingw32/lib/librpchttp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcns4.a b/x86_64-w64-mingw32/lib/librpcns4.a
index 0fe8464..2535d9a 100644
--- a/x86_64-w64-mingw32/lib/librpcns4.a
+++ b/x86_64-w64-mingw32/lib/librpcns4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcnsh.a b/x86_64-w64-mingw32/lib/librpcnsh.a
index d6a6a6c..b39461c 100644
--- a/x86_64-w64-mingw32/lib/librpcnsh.a
+++ b/x86_64-w64-mingw32/lib/librpcnsh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcref.a b/x86_64-w64-mingw32/lib/librpcref.a
index ab25d88..4c5648d 100644
--- a/x86_64-w64-mingw32/lib/librpcref.a
+++ b/x86_64-w64-mingw32/lib/librpcref.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcrt4.a b/x86_64-w64-mingw32/lib/librpcrt4.a
index a344f92..dac6234 100644
--- a/x86_64-w64-mingw32/lib/librpcrt4.a
+++ b/x86_64-w64-mingw32/lib/librpcrt4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librpcss.a b/x86_64-w64-mingw32/lib/librpcss.a
index 5c3b018..2480ed5 100644
--- a/x86_64-w64-mingw32/lib/librpcss.a
+++ b/x86_64-w64-mingw32/lib/librpcss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librsaenh.a b/x86_64-w64-mingw32/lib/librsaenh.a
index 8941ef8..58c529c 100644
--- a/x86_64-w64-mingw32/lib/librsaenh.a
+++ b/x86_64-w64-mingw32/lib/librsaenh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librsfsaps.a b/x86_64-w64-mingw32/lib/librsfsaps.a
index 7090f00..c7c08d0 100644
--- a/x86_64-w64-mingw32/lib/librsfsaps.a
+++ b/x86_64-w64-mingw32/lib/librsfsaps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librshx32.a b/x86_64-w64-mingw32/lib/librshx32.a
index 21b7762..e9dd241 100644
--- a/x86_64-w64-mingw32/lib/librshx32.a
+++ b/x86_64-w64-mingw32/lib/librshx32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librsmps.a b/x86_64-w64-mingw32/lib/librsmps.a
index a73f2bf..2222c1f 100644
--- a/x86_64-w64-mingw32/lib/librsmps.a
+++ b/x86_64-w64-mingw32/lib/librsmps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librstrmgr.a b/x86_64-w64-mingw32/lib/librstrmgr.a
index 2391f11..47347b5 100644
--- a/x86_64-w64-mingw32/lib/librstrmgr.a
+++ b/x86_64-w64-mingw32/lib/librstrmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librtm.a b/x86_64-w64-mingw32/lib/librtm.a
index 4b00c26..b42c7f3 100644
--- a/x86_64-w64-mingw32/lib/librtm.a
+++ b/x86_64-w64-mingw32/lib/librtm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librtutils.a b/x86_64-w64-mingw32/lib/librtutils.a
index 0339fbc..950a1bc 100644
--- a/x86_64-w64-mingw32/lib/librtutils.a
+++ b/x86_64-w64-mingw32/lib/librtutils.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libruntimeobject.a b/x86_64-w64-mingw32/lib/libruntimeobject.a
index bc33fdd..8922b6a 100644
--- a/x86_64-w64-mingw32/lib/libruntimeobject.a
+++ b/x86_64-w64-mingw32/lib/libruntimeobject.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/librwnh.a b/x86_64-w64-mingw32/lib/librwnh.a
index 5aba95c..e325fc6 100644
--- a/x86_64-w64-mingw32/lib/librwnh.a
+++ b/x86_64-w64-mingw32/lib/librwnh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsafrcdlg.a b/x86_64-w64-mingw32/lib/libsafrcdlg.a
index bdab3c8..abaa74e 100644
--- a/x86_64-w64-mingw32/lib/libsafrcdlg.a
+++ b/x86_64-w64-mingw32/lib/libsafrcdlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsafrdm.a b/x86_64-w64-mingw32/lib/libsafrdm.a
index b5ee499..9fe7807 100644
--- a/x86_64-w64-mingw32/lib/libsafrdm.a
+++ b/x86_64-w64-mingw32/lib/libsafrdm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsafrslv.a b/x86_64-w64-mingw32/lib/libsafrslv.a
index 968b815..0db46e2 100644
--- a/x86_64-w64-mingw32/lib/libsafrslv.a
+++ b/x86_64-w64-mingw32/lib/libsafrslv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsamlib.a b/x86_64-w64-mingw32/lib/libsamlib.a
index f24124a..70ab204 100644
--- a/x86_64-w64-mingw32/lib/libsamlib.a
+++ b/x86_64-w64-mingw32/lib/libsamlib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsamsrv.a b/x86_64-w64-mingw32/lib/libsamsrv.a
index adcd33b..6b72c12 100644
--- a/x86_64-w64-mingw32/lib/libsamsrv.a
+++ b/x86_64-w64-mingw32/lib/libsamsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsapi.a b/x86_64-w64-mingw32/lib/libsapi.a
index bb970c0..e24bf07 100644
--- a/x86_64-w64-mingw32/lib/libsapi.a
+++ b/x86_64-w64-mingw32/lib/libsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscarddlg.a b/x86_64-w64-mingw32/lib/libscarddlg.a
index 81103e5..ca34524 100644
--- a/x86_64-w64-mingw32/lib/libscarddlg.a
+++ b/x86_64-w64-mingw32/lib/libscarddlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsccbase.a b/x86_64-w64-mingw32/lib/libsccbase.a
index fb21d9e..964e6c6 100644
--- a/x86_64-w64-mingw32/lib/libsccbase.a
+++ b/x86_64-w64-mingw32/lib/libsccbase.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsccsccp.a b/x86_64-w64-mingw32/lib/libsccsccp.a
index 7df36e3..06b7cfa 100644
--- a/x86_64-w64-mingw32/lib/libsccsccp.a
+++ b/x86_64-w64-mingw32/lib/libsccsccp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscecli.a b/x86_64-w64-mingw32/lib/libscecli.a
index 6c3daab..baacfad 100644
--- a/x86_64-w64-mingw32/lib/libscecli.a
+++ b/x86_64-w64-mingw32/lib/libscecli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscesrv.a b/x86_64-w64-mingw32/lib/libscesrv.a
index 13122a8..0d1194f 100644
--- a/x86_64-w64-mingw32/lib/libscesrv.a
+++ b/x86_64-w64-mingw32/lib/libscesrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libschannel.a b/x86_64-w64-mingw32/lib/libschannel.a
index 7b8abfc..ee21033 100644
--- a/x86_64-w64-mingw32/lib/libschannel.a
+++ b/x86_64-w64-mingw32/lib/libschannel.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libschedsvc.a b/x86_64-w64-mingw32/lib/libschedsvc.a
index fc9e30b..7354fd0 100644
--- a/x86_64-w64-mingw32/lib/libschedsvc.a
+++ b/x86_64-w64-mingw32/lib/libschedsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsclgntfy.a b/x86_64-w64-mingw32/lib/libsclgntfy.a
index afb00ca..ba57b80 100644
--- a/x86_64-w64-mingw32/lib/libsclgntfy.a
+++ b/x86_64-w64-mingw32/lib/libsclgntfy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscredir.a b/x86_64-w64-mingw32/lib/libscredir.a
index 584d7d1..48977d8 100644
--- a/x86_64-w64-mingw32/lib/libscredir.a
+++ b/x86_64-w64-mingw32/lib/libscredir.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscript.a b/x86_64-w64-mingw32/lib/libscript.a
index 1d17249..b190ae1 100644
--- a/x86_64-w64-mingw32/lib/libscript.a
+++ b/x86_64-w64-mingw32/lib/libscript.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscripto.a b/x86_64-w64-mingw32/lib/libscripto.a
index fd1739a..2ce4c50 100644
--- a/x86_64-w64-mingw32/lib/libscripto.a
+++ b/x86_64-w64-mingw32/lib/libscripto.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscriptpw.a b/x86_64-w64-mingw32/lib/libscriptpw.a
index fc4887e..54f3b29 100644
--- a/x86_64-w64-mingw32/lib/libscriptpw.a
+++ b/x86_64-w64-mingw32/lib/libscriptpw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscrnsave.a b/x86_64-w64-mingw32/lib/libscrnsave.a
index 03d209d..9fe6ea6 100644
--- a/x86_64-w64-mingw32/lib/libscrnsave.a
+++ b/x86_64-w64-mingw32/lib/libscrnsave.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscrnsavw.a b/x86_64-w64-mingw32/lib/libscrnsavw.a
index 5e92373..2fa5fab 100644
--- a/x86_64-w64-mingw32/lib/libscrnsavw.a
+++ b/x86_64-w64-mingw32/lib/libscrnsavw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscrobj.a b/x86_64-w64-mingw32/lib/libscrobj.a
index f2bd63a..61a4a0f 100644
--- a/x86_64-w64-mingw32/lib/libscrobj.a
+++ b/x86_64-w64-mingw32/lib/libscrobj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscrptutl.a b/x86_64-w64-mingw32/lib/libscrptutl.a
index 4369fba..0dcc2fd 100644
--- a/x86_64-w64-mingw32/lib/libscrptutl.a
+++ b/x86_64-w64-mingw32/lib/libscrptutl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libscrrun.a b/x86_64-w64-mingw32/lib/libscrrun.a
index c53acb7..b6b319b 100644
--- a/x86_64-w64-mingw32/lib/libscrrun.a
+++ b/x86_64-w64-mingw32/lib/libscrrun.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsdhcinst.a b/x86_64-w64-mingw32/lib/libsdhcinst.a
index b86c478..be2009d 100644
--- a/x86_64-w64-mingw32/lib/libsdhcinst.a
+++ b/x86_64-w64-mingw32/lib/libsdhcinst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsdpblb.a b/x86_64-w64-mingw32/lib/libsdpblb.a
index 524b63e..a2bc896 100644
--- a/x86_64-w64-mingw32/lib/libsdpblb.a
+++ b/x86_64-w64-mingw32/lib/libsdpblb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libseclogon.a b/x86_64-w64-mingw32/lib/libseclogon.a
index eb2c803..58238b8 100644
--- a/x86_64-w64-mingw32/lib/libseclogon.a
+++ b/x86_64-w64-mingw32/lib/libseclogon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsecur32.a b/x86_64-w64-mingw32/lib/libsecur32.a
index e6165ad..6f24bcd 100644
--- a/x86_64-w64-mingw32/lib/libsecur32.a
+++ b/x86_64-w64-mingw32/lib/libsecur32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsecurity.a b/x86_64-w64-mingw32/lib/libsecurity.a
index b03ca2f..ca610a7 100644
--- a/x86_64-w64-mingw32/lib/libsecurity.a
+++ b/x86_64-w64-mingw32/lib/libsecurity.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsendcmsg.a b/x86_64-w64-mingw32/lib/libsendcmsg.a
index a966a61..88988cc 100644
--- a/x86_64-w64-mingw32/lib/libsendcmsg.a
+++ b/x86_64-w64-mingw32/lib/libsendcmsg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsendmail.a b/x86_64-w64-mingw32/lib/libsendmail.a
index dfde64d..666076d 100644
--- a/x86_64-w64-mingw32/lib/libsendmail.a
+++ b/x86_64-w64-mingw32/lib/libsendmail.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsens.a b/x86_64-w64-mingw32/lib/libsens.a
index 48208f1..08800de 100644
--- a/x86_64-w64-mingw32/lib/libsens.a
+++ b/x86_64-w64-mingw32/lib/libsens.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsensapi.a b/x86_64-w64-mingw32/lib/libsensapi.a
index dba4a56..8086162 100644
--- a/x86_64-w64-mingw32/lib/libsensapi.a
+++ b/x86_64-w64-mingw32/lib/libsensapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsenscfg.a b/x86_64-w64-mingw32/lib/libsenscfg.a
index 8c67ac6..1af8231 100644
--- a/x86_64-w64-mingw32/lib/libsenscfg.a
+++ b/x86_64-w64-mingw32/lib/libsenscfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsensorsapi.a b/x86_64-w64-mingw32/lib/libsensorsapi.a
index ca62080..0fad960 100644
--- a/x86_64-w64-mingw32/lib/libsensorsapi.a
+++ b/x86_64-w64-mingw32/lib/libsensorsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libseo.a b/x86_64-w64-mingw32/lib/libseo.a
index 47764ca..dbd7b61 100644
--- a/x86_64-w64-mingw32/lib/libseo.a
+++ b/x86_64-w64-mingw32/lib/libseo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libseos.a b/x86_64-w64-mingw32/lib/libseos.a
index 0640d9c..30c28eb 100644
--- a/x86_64-w64-mingw32/lib/libseos.a
+++ b/x86_64-w64-mingw32/lib/libseos.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libserialui.a b/x86_64-w64-mingw32/lib/libserialui.a
index ba33fc1..27f0bcd 100644
--- a/x86_64-w64-mingw32/lib/libserialui.a
+++ b/x86_64-w64-mingw32/lib/libserialui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libservdeps.a b/x86_64-w64-mingw32/lib/libservdeps.a
index 323c76a..1857ec2 100644
--- a/x86_64-w64-mingw32/lib/libservdeps.a
+++ b/x86_64-w64-mingw32/lib/libservdeps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libserwvdrv.a b/x86_64-w64-mingw32/lib/libserwvdrv.a
index d6d13d0..24caca5 100644
--- a/x86_64-w64-mingw32/lib/libserwvdrv.a
+++ b/x86_64-w64-mingw32/lib/libserwvdrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsetupapi.a b/x86_64-w64-mingw32/lib/libsetupapi.a
index d994ad4..f84b12e 100644
--- a/x86_64-w64-mingw32/lib/libsetupapi.a
+++ b/x86_64-w64-mingw32/lib/libsetupapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsetupqry.a b/x86_64-w64-mingw32/lib/libsetupqry.a
index 3a4423b..088cc99 100644
--- a/x86_64-w64-mingw32/lib/libsetupqry.a
+++ b/x86_64-w64-mingw32/lib/libsetupqry.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsfc.a b/x86_64-w64-mingw32/lib/libsfc.a
index be22353..4400e25 100644
--- a/x86_64-w64-mingw32/lib/libsfc.a
+++ b/x86_64-w64-mingw32/lib/libsfc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsfc_os.a b/x86_64-w64-mingw32/lib/libsfc_os.a
index c38d6aa..bf3d94e 100644
--- a/x86_64-w64-mingw32/lib/libsfc_os.a
+++ b/x86_64-w64-mingw32/lib/libsfc_os.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsfcfiles.a b/x86_64-w64-mingw32/lib/libsfcfiles.a
index 8fa2f14..46f9ab0 100644
--- a/x86_64-w64-mingw32/lib/libsfcfiles.a
+++ b/x86_64-w64-mingw32/lib/libsfcfiles.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsfmapi.a b/x86_64-w64-mingw32/lib/libsfmapi.a
index a44bae6..b675333 100644
--- a/x86_64-w64-mingw32/lib/libsfmapi.a
+++ b/x86_64-w64-mingw32/lib/libsfmapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshdocvw.a b/x86_64-w64-mingw32/lib/libshdocvw.a
index e2320fd..4d85baf 100644
--- a/x86_64-w64-mingw32/lib/libshdocvw.a
+++ b/x86_64-w64-mingw32/lib/libshdocvw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshell32.a b/x86_64-w64-mingw32/lib/libshell32.a
index 971678b..7a45ac4 100644
--- a/x86_64-w64-mingw32/lib/libshell32.a
+++ b/x86_64-w64-mingw32/lib/libshell32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshfolder.a b/x86_64-w64-mingw32/lib/libshfolder.a
index c41a27d..dad99b0 100644
--- a/x86_64-w64-mingw32/lib/libshfolder.a
+++ b/x86_64-w64-mingw32/lib/libshfolder.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshgina.a b/x86_64-w64-mingw32/lib/libshgina.a
index 1ae1112..57b2446 100644
--- a/x86_64-w64-mingw32/lib/libshgina.a
+++ b/x86_64-w64-mingw32/lib/libshgina.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshimeng.a b/x86_64-w64-mingw32/lib/libshimeng.a
index b0c4c4c..784f85c 100644
--- a/x86_64-w64-mingw32/lib/libshimeng.a
+++ b/x86_64-w64-mingw32/lib/libshimeng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshimgvw.a b/x86_64-w64-mingw32/lib/libshimgvw.a
index be5af0a..f766ccf 100644
--- a/x86_64-w64-mingw32/lib/libshimgvw.a
+++ b/x86_64-w64-mingw32/lib/libshimgvw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshlwapi.a b/x86_64-w64-mingw32/lib/libshlwapi.a
index cbb33ec..0887c4e 100644
--- a/x86_64-w64-mingw32/lib/libshlwapi.a
+++ b/x86_64-w64-mingw32/lib/libshlwapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshmedia.a b/x86_64-w64-mingw32/lib/libshmedia.a
index 02a68a9..a3a4395 100644
--- a/x86_64-w64-mingw32/lib/libshmedia.a
+++ b/x86_64-w64-mingw32/lib/libshmedia.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshscrap.a b/x86_64-w64-mingw32/lib/libshscrap.a
index 2bec93f..23a59d0 100644
--- a/x86_64-w64-mingw32/lib/libshscrap.a
+++ b/x86_64-w64-mingw32/lib/libshscrap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libshsvcs.a b/x86_64-w64-mingw32/lib/libshsvcs.a
index 09f5b67..2446c2e 100644
--- a/x86_64-w64-mingw32/lib/libshsvcs.a
+++ b/x86_64-w64-mingw32/lib/libshsvcs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsigtab.a b/x86_64-w64-mingw32/lib/libsigtab.a
index fd39671..258ba79 100644
--- a/x86_64-w64-mingw32/lib/libsigtab.a
+++ b/x86_64-w64-mingw32/lib/libsigtab.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsimptcp.a b/x86_64-w64-mingw32/lib/libsimptcp.a
index f1ba1b6..764be0d 100644
--- a/x86_64-w64-mingw32/lib/libsimptcp.a
+++ b/x86_64-w64-mingw32/lib/libsimptcp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsisbkup.a b/x86_64-w64-mingw32/lib/libsisbkup.a
index 7792117..e2c0a5e 100644
--- a/x86_64-w64-mingw32/lib/libsisbkup.a
+++ b/x86_64-w64-mingw32/lib/libsisbkup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libskdll.a b/x86_64-w64-mingw32/lib/libskdll.a
index 13cd080..3e616a6 100644
--- a/x86_64-w64-mingw32/lib/libskdll.a
+++ b/x86_64-w64-mingw32/lib/libskdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslayerxp.a b/x86_64-w64-mingw32/lib/libslayerxp.a
index da7a114..74525aa 100644
--- a/x86_64-w64-mingw32/lib/libslayerxp.a
+++ b/x86_64-w64-mingw32/lib/libslayerxp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslbcsp.a b/x86_64-w64-mingw32/lib/libslbcsp.a
index a11d315..f861806 100644
--- a/x86_64-w64-mingw32/lib/libslbcsp.a
+++ b/x86_64-w64-mingw32/lib/libslbcsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslbiop.a b/x86_64-w64-mingw32/lib/libslbiop.a
index 9205730..05811f1 100644
--- a/x86_64-w64-mingw32/lib/libslbiop.a
+++ b/x86_64-w64-mingw32/lib/libslbiop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslc.a b/x86_64-w64-mingw32/lib/libslc.a
index a6efb6c..3ed4245 100644
--- a/x86_64-w64-mingw32/lib/libslc.a
+++ b/x86_64-w64-mingw32/lib/libslc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslcext.a b/x86_64-w64-mingw32/lib/libslcext.a
index 9c17200..5529df9 100644
--- a/x86_64-w64-mingw32/lib/libslcext.a
+++ b/x86_64-w64-mingw32/lib/libslcext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libslwga.a b/x86_64-w64-mingw32/lib/libslwga.a
index dd5fb2f..dde7e17 100644
--- a/x86_64-w64-mingw32/lib/libslwga.a
+++ b/x86_64-w64-mingw32/lib/libslwga.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmlogcfg.a b/x86_64-w64-mingw32/lib/libsmlogcfg.a
index 8f2a479..23da18d 100644
--- a/x86_64-w64-mingw32/lib/libsmlogcfg.a
+++ b/x86_64-w64-mingw32/lib/libsmlogcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpadm.a b/x86_64-w64-mingw32/lib/libsmtpadm.a
index 48365cf..9d3f26d 100644
--- a/x86_64-w64-mingw32/lib/libsmtpadm.a
+++ b/x86_64-w64-mingw32/lib/libsmtpadm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpapi.a b/x86_64-w64-mingw32/lib/libsmtpapi.a
index ffae585..9d5ca62 100644
--- a/x86_64-w64-mingw32/lib/libsmtpapi.a
+++ b/x86_64-w64-mingw32/lib/libsmtpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpcons.a b/x86_64-w64-mingw32/lib/libsmtpcons.a
index a183c9c..e1289b2 100644
--- a/x86_64-w64-mingw32/lib/libsmtpcons.a
+++ b/x86_64-w64-mingw32/lib/libsmtpcons.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpctrs.a b/x86_64-w64-mingw32/lib/libsmtpctrs.a
index 16ee878..9c32390 100644
--- a/x86_64-w64-mingw32/lib/libsmtpctrs.a
+++ b/x86_64-w64-mingw32/lib/libsmtpctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpsnap.a b/x86_64-w64-mingw32/lib/libsmtpsnap.a
index fb818ee..c9e49b1 100644
--- a/x86_64-w64-mingw32/lib/libsmtpsnap.a
+++ b/x86_64-w64-mingw32/lib/libsmtpsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsmtpsvc.a b/x86_64-w64-mingw32/lib/libsmtpsvc.a
index ffa828f..1f045d8 100644
--- a/x86_64-w64-mingw32/lib/libsmtpsvc.a
+++ b/x86_64-w64-mingw32/lib/libsmtpsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsniffpol.a b/x86_64-w64-mingw32/lib/libsniffpol.a
index d2c89d5..b1f83c0 100644
--- a/x86_64-w64-mingw32/lib/libsniffpol.a
+++ b/x86_64-w64-mingw32/lib/libsniffpol.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpapi.a b/x86_64-w64-mingw32/lib/libsnmpapi.a
index f0778ad..4908f07 100644
--- a/x86_64-w64-mingw32/lib/libsnmpapi.a
+++ b/x86_64-w64-mingw32/lib/libsnmpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpcl.a b/x86_64-w64-mingw32/lib/libsnmpcl.a
index 6fcd0ce..710eeed 100644
--- a/x86_64-w64-mingw32/lib/libsnmpcl.a
+++ b/x86_64-w64-mingw32/lib/libsnmpcl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpincl.a b/x86_64-w64-mingw32/lib/libsnmpincl.a
index f536892..4a50fa5 100644
--- a/x86_64-w64-mingw32/lib/libsnmpincl.a
+++ b/x86_64-w64-mingw32/lib/libsnmpincl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpmib.a b/x86_64-w64-mingw32/lib/libsnmpmib.a
index f42b922..91e13e0 100644
--- a/x86_64-w64-mingw32/lib/libsnmpmib.a
+++ b/x86_64-w64-mingw32/lib/libsnmpmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpsmir.a b/x86_64-w64-mingw32/lib/libsnmpsmir.a
index 3f97bb2..be34bce 100644
--- a/x86_64-w64-mingw32/lib/libsnmpsmir.a
+++ b/x86_64-w64-mingw32/lib/libsnmpsmir.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpsnap.a b/x86_64-w64-mingw32/lib/libsnmpsnap.a
index 81a62b9..6e7c7c3 100644
--- a/x86_64-w64-mingw32/lib/libsnmpsnap.a
+++ b/x86_64-w64-mingw32/lib/libsnmpsnap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpstup.a b/x86_64-w64-mingw32/lib/libsnmpstup.a
index 20045fe..77d25ae 100644
--- a/x86_64-w64-mingw32/lib/libsnmpstup.a
+++ b/x86_64-w64-mingw32/lib/libsnmpstup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnmpthrd.a b/x86_64-w64-mingw32/lib/libsnmpthrd.a
index b5f7cb3..43a89bd 100644
--- a/x86_64-w64-mingw32/lib/libsnmpthrd.a
+++ b/x86_64-w64-mingw32/lib/libsnmpthrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsnprfdll.a b/x86_64-w64-mingw32/lib/libsnprfdll.a
index 097d05e..4e7e83e 100644
--- a/x86_64-w64-mingw32/lib/libsnprfdll.a
+++ b/x86_64-w64-mingw32/lib/libsnprfdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsoftkbd.a b/x86_64-w64-mingw32/lib/libsoftkbd.a
index a0811e9..e4e7ff0 100644
--- a/x86_64-w64-mingw32/lib/libsoftkbd.a
+++ b/x86_64-w64-mingw32/lib/libsoftkbd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsoftpub.a b/x86_64-w64-mingw32/lib/libsoftpub.a
index e21b1e9..5cc0b3b 100644
--- a/x86_64-w64-mingw32/lib/libsoftpub.a
+++ b/x86_64-w64-mingw32/lib/libsoftpub.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libspcommon.a b/x86_64-w64-mingw32/lib/libspcommon.a
index e672558..2824f6e 100644
--- a/x86_64-w64-mingw32/lib/libspcommon.a
+++ b/x86_64-w64-mingw32/lib/libspcommon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libspoolss.a b/x86_64-w64-mingw32/lib/libspoolss.a
index d22df2b..8497a8d 100644
--- a/x86_64-w64-mingw32/lib/libspoolss.a
+++ b/x86_64-w64-mingw32/lib/libspoolss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsptip.a b/x86_64-w64-mingw32/lib/libsptip.a
index 7df3014..f16121c 100644
--- a/x86_64-w64-mingw32/lib/libsptip.a
+++ b/x86_64-w64-mingw32/lib/libsptip.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libspttseng.a b/x86_64-w64-mingw32/lib/libspttseng.a
index 4a8f152..2434f94 100644
--- a/x86_64-w64-mingw32/lib/libspttseng.a
+++ b/x86_64-w64-mingw32/lib/libspttseng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsqlsrv32.a b/x86_64-w64-mingw32/lib/libsqlsrv32.a
index c45cffe..0dd494a 100644
--- a/x86_64-w64-mingw32/lib/libsqlsrv32.a
+++ b/x86_64-w64-mingw32/lib/libsqlsrv32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsqlxmlx.a b/x86_64-w64-mingw32/lib/libsqlxmlx.a
index b1871ed..379417d 100644
--- a/x86_64-w64-mingw32/lib/libsqlxmlx.a
+++ b/x86_64-w64-mingw32/lib/libsqlxmlx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrchctls.a b/x86_64-w64-mingw32/lib/libsrchctls.a
index 11849d0..dc306fb 100644
--- a/x86_64-w64-mingw32/lib/libsrchctls.a
+++ b/x86_64-w64-mingw32/lib/libsrchctls.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrchui.a b/x86_64-w64-mingw32/lib/libsrchui.a
index a7eccee..2d49e2b 100644
--- a/x86_64-w64-mingw32/lib/libsrchui.a
+++ b/x86_64-w64-mingw32/lib/libsrchui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrclient.a b/x86_64-w64-mingw32/lib/libsrclient.a
index c70fc8b..86ccb0f 100644
--- a/x86_64-w64-mingw32/lib/libsrclient.a
+++ b/x86_64-w64-mingw32/lib/libsrclient.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrrstr.a b/x86_64-w64-mingw32/lib/libsrrstr.a
index 6ee0a82..9e95794 100644
--- a/x86_64-w64-mingw32/lib/libsrrstr.a
+++ b/x86_64-w64-mingw32/lib/libsrrstr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrsvc.a b/x86_64-w64-mingw32/lib/libsrsvc.a
index f3b0a48..8dd2f40 100644
--- a/x86_64-w64-mingw32/lib/libsrsvc.a
+++ b/x86_64-w64-mingw32/lib/libsrsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsrvsvc.a b/x86_64-w64-mingw32/lib/libsrvsvc.a
index 8e548d2..5abebec 100644
--- a/x86_64-w64-mingw32/lib/libsrvsvc.a
+++ b/x86_64-w64-mingw32/lib/libsrvsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libssdpapi.a b/x86_64-w64-mingw32/lib/libssdpapi.a
index 029ca23..7bb6132 100644
--- a/x86_64-w64-mingw32/lib/libssdpapi.a
+++ b/x86_64-w64-mingw32/lib/libssdpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libssdpsrv.a b/x86_64-w64-mingw32/lib/libssdpsrv.a
index 6f527d8..34b19f0 100644
--- a/x86_64-w64-mingw32/lib/libssdpsrv.a
+++ b/x86_64-w64-mingw32/lib/libssdpsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libssinc.a b/x86_64-w64-mingw32/lib/libssinc.a
index f7d17de..42b441c 100644
--- a/x86_64-w64-mingw32/lib/libssinc.a
+++ b/x86_64-w64-mingw32/lib/libssinc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libssp.a b/x86_64-w64-mingw32/lib/libssp.a
index bc768fc..9195190 100644
--- a/x86_64-w64-mingw32/lib/libssp.a
+++ b/x86_64-w64-mingw32/lib/libssp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libssp_nonshared.a b/x86_64-w64-mingw32/lib/libssp_nonshared.a
index d3e6497..2b72960 100644
--- a/x86_64-w64-mingw32/lib/libssp_nonshared.a
+++ b/x86_64-w64-mingw32/lib/libssp_nonshared.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsspicli.a b/x86_64-w64-mingw32/lib/libsspicli.a
index 15428c3..1ef8d47 100644
--- a/x86_64-w64-mingw32/lib/libsspicli.a
+++ b/x86_64-w64-mingw32/lib/libsspicli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsstub.a b/x86_64-w64-mingw32/lib/libsstub.a
index e32019b..7003092 100644
--- a/x86_64-w64-mingw32/lib/libsstub.a
+++ b/x86_64-w64-mingw32/lib/libsstub.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstaxmem.a b/x86_64-w64-mingw32/lib/libstaxmem.a
index de67419..913e39e 100644
--- a/x86_64-w64-mingw32/lib/libstaxmem.a
+++ b/x86_64-w64-mingw32/lib/libstaxmem.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstclient.a b/x86_64-w64-mingw32/lib/libstclient.a
index 63680ca..9f4e3fd 100644
--- a/x86_64-w64-mingw32/lib/libstclient.a
+++ b/x86_64-w64-mingw32/lib/libstclient.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstdc++.a b/x86_64-w64-mingw32/lib/libstdc++.a
index 44a16c5..9cd0ee2 100644
--- a/x86_64-w64-mingw32/lib/libstdc++.a
+++ b/x86_64-w64-mingw32/lib/libstdc++.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstdprov.a b/x86_64-w64-mingw32/lib/libstdprov.a
index cac32ce..ac2a271 100644
--- a/x86_64-w64-mingw32/lib/libstdprov.a
+++ b/x86_64-w64-mingw32/lib/libstdprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsti.a b/x86_64-w64-mingw32/lib/libsti.a
index 42b6843..3a517d5 100644
--- a/x86_64-w64-mingw32/lib/libsti.a
+++ b/x86_64-w64-mingw32/lib/libsti.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsti_ci.a b/x86_64-w64-mingw32/lib/libsti_ci.a
index a227400..4d8ae5f 100644
--- a/x86_64-w64-mingw32/lib/libsti_ci.a
+++ b/x86_64-w64-mingw32/lib/libsti_ci.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstobject.a b/x86_64-w64-mingw32/lib/libstobject.a
index ff659a1..0927f0d 100644
--- a/x86_64-w64-mingw32/lib/libstobject.a
+++ b/x86_64-w64-mingw32/lib/libstobject.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstorprop.a b/x86_64-w64-mingw32/lib/libstorprop.a
index 7c27f97..6c464c9 100644
--- a/x86_64-w64-mingw32/lib/libstorprop.a
+++ b/x86_64-w64-mingw32/lib/libstorprop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstreamci.a b/x86_64-w64-mingw32/lib/libstreamci.a
index 430e792..8bdadbf 100644
--- a/x86_64-w64-mingw32/lib/libstreamci.a
+++ b/x86_64-w64-mingw32/lib/libstreamci.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstrmfilt.a b/x86_64-w64-mingw32/lib/libstrmfilt.a
index b123ca3..9d1c593 100644
--- a/x86_64-w64-mingw32/lib/libstrmfilt.a
+++ b/x86_64-w64-mingw32/lib/libstrmfilt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libstrmiids.a b/x86_64-w64-mingw32/lib/libstrmiids.a
index 1a75a24..2131bf3 100644
--- a/x86_64-w64-mingw32/lib/libstrmiids.a
+++ b/x86_64-w64-mingw32/lib/libstrmiids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsupc++.a b/x86_64-w64-mingw32/lib/libsupc++.a
index 5ab59a9..d254d60 100644
--- a/x86_64-w64-mingw32/lib/libsupc++.a
+++ b/x86_64-w64-mingw32/lib/libsupc++.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsvcext.a b/x86_64-w64-mingw32/lib/libsvcext.a
index 5aa4376..1162370 100644
--- a/x86_64-w64-mingw32/lib/libsvcext.a
+++ b/x86_64-w64-mingw32/lib/libsvcext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsvcpack.a b/x86_64-w64-mingw32/lib/libsvcpack.a
index 397cd7d..75227b5 100644
--- a/x86_64-w64-mingw32/lib/libsvcpack.a
+++ b/x86_64-w64-mingw32/lib/libsvcpack.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libswprv.a b/x86_64-w64-mingw32/lib/libswprv.a
index 14e5f85..08ec3bf 100644
--- a/x86_64-w64-mingw32/lib/libswprv.a
+++ b/x86_64-w64-mingw32/lib/libswprv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsxs.a b/x86_64-w64-mingw32/lib/libsxs.a
index eca7121..c0106bf 100644
--- a/x86_64-w64-mingw32/lib/libsxs.a
+++ b/x86_64-w64-mingw32/lib/libsxs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsynceng.a b/x86_64-w64-mingw32/lib/libsynceng.a
index 19ae0bd..29db325 100644
--- a/x86_64-w64-mingw32/lib/libsynceng.a
+++ b/x86_64-w64-mingw32/lib/libsynceng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsyncui.a b/x86_64-w64-mingw32/lib/libsyncui.a
index 29cb7a3..6154583 100644
--- a/x86_64-w64-mingw32/lib/libsyncui.a
+++ b/x86_64-w64-mingw32/lib/libsyncui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsysinv.a b/x86_64-w64-mingw32/lib/libsysinv.a
index 52ee5d3..1efa7e3 100644
--- a/x86_64-w64-mingw32/lib/libsysinv.a
+++ b/x86_64-w64-mingw32/lib/libsysinv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsysmod.a b/x86_64-w64-mingw32/lib/libsysmod.a
index adc9e37..0b051bd 100644
--- a/x86_64-w64-mingw32/lib/libsysmod.a
+++ b/x86_64-w64-mingw32/lib/libsysmod.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libsyssetup.a b/x86_64-w64-mingw32/lib/libsyssetup.a
index 14c0350..67b305c 100644
--- a/x86_64-w64-mingw32/lib/libsyssetup.a
+++ b/x86_64-w64-mingw32/lib/libsyssetup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libt2embed.a b/x86_64-w64-mingw32/lib/libt2embed.a
index 3283500..be6f983 100644
--- a/x86_64-w64-mingw32/lib/libt2embed.a
+++ b/x86_64-w64-mingw32/lib/libt2embed.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtapi3.a b/x86_64-w64-mingw32/lib/libtapi3.a
index 1430d7d..80e1e81 100644
--- a/x86_64-w64-mingw32/lib/libtapi3.a
+++ b/x86_64-w64-mingw32/lib/libtapi3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtapi32.a b/x86_64-w64-mingw32/lib/libtapi32.a
index 3536aa2..52b1f8e 100644
--- a/x86_64-w64-mingw32/lib/libtapi32.a
+++ b/x86_64-w64-mingw32/lib/libtapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtapiperf.a b/x86_64-w64-mingw32/lib/libtapiperf.a
index 672b0a4..46ccb3a 100644
--- a/x86_64-w64-mingw32/lib/libtapiperf.a
+++ b/x86_64-w64-mingw32/lib/libtapiperf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtapisrv.a b/x86_64-w64-mingw32/lib/libtapisrv.a
index 46dc302..18d3204 100644
--- a/x86_64-w64-mingw32/lib/libtapisrv.a
+++ b/x86_64-w64-mingw32/lib/libtapisrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtbs.a b/x86_64-w64-mingw32/lib/libtbs.a
index 1fbab9d..3493466 100644
--- a/x86_64-w64-mingw32/lib/libtbs.a
+++ b/x86_64-w64-mingw32/lib/libtbs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtcpmib.a b/x86_64-w64-mingw32/lib/libtcpmib.a
index 3928cda..48740db 100644
--- a/x86_64-w64-mingw32/lib/libtcpmib.a
+++ b/x86_64-w64-mingw32/lib/libtcpmib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtcpmon.a b/x86_64-w64-mingw32/lib/libtcpmon.a
index 2904581..95d3ffb 100644
--- a/x86_64-w64-mingw32/lib/libtcpmon.a
+++ b/x86_64-w64-mingw32/lib/libtcpmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtcpmonui.a b/x86_64-w64-mingw32/lib/libtcpmonui.a
index 7b70fca..6068067 100644
--- a/x86_64-w64-mingw32/lib/libtcpmonui.a
+++ b/x86_64-w64-mingw32/lib/libtcpmonui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtdh.a b/x86_64-w64-mingw32/lib/libtdh.a
index 7b7005f..8ffa928 100644
--- a/x86_64-w64-mingw32/lib/libtdh.a
+++ b/x86_64-w64-mingw32/lib/libtdh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtermmgr.a b/x86_64-w64-mingw32/lib/libtermmgr.a
index 80787bc..9c111c4 100644
--- a/x86_64-w64-mingw32/lib/libtermmgr.a
+++ b/x86_64-w64-mingw32/lib/libtermmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtermsrv.a b/x86_64-w64-mingw32/lib/libtermsrv.a
index e95628e..9d50995 100644
--- a/x86_64-w64-mingw32/lib/libtermsrv.a
+++ b/x86_64-w64-mingw32/lib/libtermsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libthawbrkr.a b/x86_64-w64-mingw32/lib/libthawbrkr.a
index b0ffdf7..43dbffa 100644
--- a/x86_64-w64-mingw32/lib/libthawbrkr.a
+++ b/x86_64-w64-mingw32/lib/libthawbrkr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libthemeui.a b/x86_64-w64-mingw32/lib/libthemeui.a
index 8ba55f1..8ec1036 100644
--- a/x86_64-w64-mingw32/lib/libthemeui.a
+++ b/x86_64-w64-mingw32/lib/libthemeui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtlntsvrp.a b/x86_64-w64-mingw32/lib/libtlntsvrp.a
index 9f80b29..a7c7fa1 100644
--- a/x86_64-w64-mingw32/lib/libtlntsvrp.a
+++ b/x86_64-w64-mingw32/lib/libtlntsvrp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtraffic.a b/x86_64-w64-mingw32/lib/libtraffic.a
index 99b55f4..4f66ede 100644
--- a/x86_64-w64-mingw32/lib/libtraffic.a
+++ b/x86_64-w64-mingw32/lib/libtraffic.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtrialoc.a b/x86_64-w64-mingw32/lib/libtrialoc.a
index 765ed1c..7c26f53 100644
--- a/x86_64-w64-mingw32/lib/libtrialoc.a
+++ b/x86_64-w64-mingw32/lib/libtrialoc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtrkwks.a b/x86_64-w64-mingw32/lib/libtrkwks.a
index 85022af..9b6a440 100644
--- a/x86_64-w64-mingw32/lib/libtrkwks.a
+++ b/x86_64-w64-mingw32/lib/libtrkwks.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtsappcmp.a b/x86_64-w64-mingw32/lib/libtsappcmp.a
index 3be294a..f43f95b 100644
--- a/x86_64-w64-mingw32/lib/libtsappcmp.a
+++ b/x86_64-w64-mingw32/lib/libtsappcmp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtsbyuv.a b/x86_64-w64-mingw32/lib/libtsbyuv.a
index 8e4333f..e9b2418 100644
--- a/x86_64-w64-mingw32/lib/libtsbyuv.a
+++ b/x86_64-w64-mingw32/lib/libtsbyuv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtscfgwmi.a b/x86_64-w64-mingw32/lib/libtscfgwmi.a
index f56333c..926fbd0 100644
--- a/x86_64-w64-mingw32/lib/libtscfgwmi.a
+++ b/x86_64-w64-mingw32/lib/libtscfgwmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtsd32.a b/x86_64-w64-mingw32/lib/libtsd32.a
index cfdf5a6..ecc5875 100644
--- a/x86_64-w64-mingw32/lib/libtsd32.a
+++ b/x86_64-w64-mingw32/lib/libtsd32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtshoot.a b/x86_64-w64-mingw32/lib/libtshoot.a
index 0f52236..c3bb009 100644
--- a/x86_64-w64-mingw32/lib/libtshoot.a
+++ b/x86_64-w64-mingw32/lib/libtshoot.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtsoc.a b/x86_64-w64-mingw32/lib/libtsoc.a
index f2568b5..01c4af6 100644
--- a/x86_64-w64-mingw32/lib/libtsoc.a
+++ b/x86_64-w64-mingw32/lib/libtsoc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtwext.a b/x86_64-w64-mingw32/lib/libtwext.a
index 8daf84d..c504b42 100644
--- a/x86_64-w64-mingw32/lib/libtwext.a
+++ b/x86_64-w64-mingw32/lib/libtwext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtxflog.a b/x86_64-w64-mingw32/lib/libtxflog.a
index 3bf0a3f..957682b 100644
--- a/x86_64-w64-mingw32/lib/libtxflog.a
+++ b/x86_64-w64-mingw32/lib/libtxflog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libtxfw32.a b/x86_64-w64-mingw32/lib/libtxfw32.a
index 463bfe6..7d53a55 100644
--- a/x86_64-w64-mingw32/lib/libtxfw32.a
+++ b/x86_64-w64-mingw32/lib/libtxfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libudhisapi.a b/x86_64-w64-mingw32/lib/libudhisapi.a
index 7076d2c..7b56aa4 100644
--- a/x86_64-w64-mingw32/lib/libudhisapi.a
+++ b/x86_64-w64-mingw32/lib/libudhisapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libufat.a b/x86_64-w64-mingw32/lib/libufat.a
index 87f8b4a..8146c37 100644
--- a/x86_64-w64-mingw32/lib/libufat.a
+++ b/x86_64-w64-mingw32/lib/libufat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuihelper.a b/x86_64-w64-mingw32/lib/libuihelper.a
index 4cdf96c..72de5f2 100644
--- a/x86_64-w64-mingw32/lib/libuihelper.a
+++ b/x86_64-w64-mingw32/lib/libuihelper.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libulib.a b/x86_64-w64-mingw32/lib/libulib.a
index d0a865b..58770ef 100644
--- a/x86_64-w64-mingw32/lib/libulib.a
+++ b/x86_64-w64-mingw32/lib/libulib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libumandlg.a b/x86_64-w64-mingw32/lib/libumandlg.a
index 5f23a4e..1a2b857 100644
--- a/x86_64-w64-mingw32/lib/libumandlg.a
+++ b/x86_64-w64-mingw32/lib/libumandlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libumdmxfrm.a b/x86_64-w64-mingw32/lib/libumdmxfrm.a
index 25ed44b..e562f5a 100644
--- a/x86_64-w64-mingw32/lib/libumdmxfrm.a
+++ b/x86_64-w64-mingw32/lib/libumdmxfrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libumpnpmgr.a b/x86_64-w64-mingw32/lib/libumpnpmgr.a
index c5db4cc..ea323e2 100644
--- a/x86_64-w64-mingw32/lib/libumpnpmgr.a
+++ b/x86_64-w64-mingw32/lib/libumpnpmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuniime.a b/x86_64-w64-mingw32/lib/libuniime.a
index 17f1ac6..ba0de21 100644
--- a/x86_64-w64-mingw32/lib/libuniime.a
+++ b/x86_64-w64-mingw32/lib/libuniime.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libunimdmat.a b/x86_64-w64-mingw32/lib/libunimdmat.a
index 7d5c18d..0f2d857 100644
--- a/x86_64-w64-mingw32/lib/libunimdmat.a
+++ b/x86_64-w64-mingw32/lib/libunimdmat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuniplat.a b/x86_64-w64-mingw32/lib/libuniplat.a
index 0d010da..1103982 100644
--- a/x86_64-w64-mingw32/lib/libuniplat.a
+++ b/x86_64-w64-mingw32/lib/libuniplat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuntfs.a b/x86_64-w64-mingw32/lib/libuntfs.a
index 4fa5c33..127f3f5 100644
--- a/x86_64-w64-mingw32/lib/libuntfs.a
+++ b/x86_64-w64-mingw32/lib/libuntfs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libupnp.a b/x86_64-w64-mingw32/lib/libupnp.a
index 4891e9b..9c963ab 100644
--- a/x86_64-w64-mingw32/lib/libupnp.a
+++ b/x86_64-w64-mingw32/lib/libupnp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libupnphost.a b/x86_64-w64-mingw32/lib/libupnphost.a
index ffa04b0..fcfa118 100644
--- a/x86_64-w64-mingw32/lib/libupnphost.a
+++ b/x86_64-w64-mingw32/lib/libupnphost.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libupnpui.a b/x86_64-w64-mingw32/lib/libupnpui.a
index 4d9cc37..19e0df0 100644
--- a/x86_64-w64-mingw32/lib/libupnpui.a
+++ b/x86_64-w64-mingw32/lib/libupnpui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libureg.a b/x86_64-w64-mingw32/lib/libureg.a
index abe329b..73c1e0d 100644
--- a/x86_64-w64-mingw32/lib/libureg.a
+++ b/x86_64-w64-mingw32/lib/libureg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liburl.a b/x86_64-w64-mingw32/lib/liburl.a
index b7f5124..db861e2 100644
--- a/x86_64-w64-mingw32/lib/liburl.a
+++ b/x86_64-w64-mingw32/lib/liburl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liburlauth.a b/x86_64-w64-mingw32/lib/liburlauth.a
index 36b96de..b93ddfa 100644
--- a/x86_64-w64-mingw32/lib/liburlauth.a
+++ b/x86_64-w64-mingw32/lib/liburlauth.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/liburlmon.a b/x86_64-w64-mingw32/lib/liburlmon.a
index 2b272bc..e78c0b0 100644
--- a/x86_64-w64-mingw32/lib/liburlmon.a
+++ b/x86_64-w64-mingw32/lib/liburlmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libusbcamd2.a b/x86_64-w64-mingw32/lib/libusbcamd2.a
index 0b44a66..6b6a6d2 100644
--- a/x86_64-w64-mingw32/lib/libusbcamd2.a
+++ b/x86_64-w64-mingw32/lib/libusbcamd2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libusbd.a b/x86_64-w64-mingw32/lib/libusbd.a
index 9327372..99183df 100644
--- a/x86_64-w64-mingw32/lib/libusbd.a
+++ b/x86_64-w64-mingw32/lib/libusbd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libusbmon.a b/x86_64-w64-mingw32/lib/libusbmon.a
index cd19f2c..d9becd5 100644
--- a/x86_64-w64-mingw32/lib/libusbmon.a
+++ b/x86_64-w64-mingw32/lib/libusbmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libusbport.a b/x86_64-w64-mingw32/lib/libusbport.a
index 8de311e..89cf2b5 100644
--- a/x86_64-w64-mingw32/lib/libusbport.a
+++ b/x86_64-w64-mingw32/lib/libusbport.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuser32.a b/x86_64-w64-mingw32/lib/libuser32.a
index 4964609..4c37a00 100644
--- a/x86_64-w64-mingw32/lib/libuser32.a
+++ b/x86_64-w64-mingw32/lib/libuser32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuserenv.a b/x86_64-w64-mingw32/lib/libuserenv.a
index 3f4b871..fdfc2f1 100644
--- a/x86_64-w64-mingw32/lib/libuserenv.a
+++ b/x86_64-w64-mingw32/lib/libuserenv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libusp10.a b/x86_64-w64-mingw32/lib/libusp10.a
index fd2061a..1516e75 100644
--- a/x86_64-w64-mingw32/lib/libusp10.a
+++ b/x86_64-w64-mingw32/lib/libusp10.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libutildll.a b/x86_64-w64-mingw32/lib/libutildll.a
index 44dde9e..8c2aa9e 100644
--- a/x86_64-w64-mingw32/lib/libutildll.a
+++ b/x86_64-w64-mingw32/lib/libutildll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuuid.a b/x86_64-w64-mingw32/lib/libuuid.a
index 72aa8e0..5da1f76 100644
--- a/x86_64-w64-mingw32/lib/libuuid.a
+++ b/x86_64-w64-mingw32/lib/libuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libuxtheme.a b/x86_64-w64-mingw32/lib/libuxtheme.a
index 19baa94..a3acf07 100644
--- a/x86_64-w64-mingw32/lib/libuxtheme.a
+++ b/x86_64-w64-mingw32/lib/libuxtheme.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvbscript.a b/x86_64-w64-mingw32/lib/libvbscript.a
index c11e500..f23ce79 100644
--- a/x86_64-w64-mingw32/lib/libvbscript.a
+++ b/x86_64-w64-mingw32/lib/libvbscript.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvds_ps.a b/x86_64-w64-mingw32/lib/libvds_ps.a
index 8f924ac..806a9f6 100644
--- a/x86_64-w64-mingw32/lib/libvds_ps.a
+++ b/x86_64-w64-mingw32/lib/libvds_ps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvdsbas.a b/x86_64-w64-mingw32/lib/libvdsbas.a
index 28951e1..23f39c8 100644
--- a/x86_64-w64-mingw32/lib/libvdsbas.a
+++ b/x86_64-w64-mingw32/lib/libvdsbas.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvdsdyndr.a b/x86_64-w64-mingw32/lib/libvdsdyndr.a
index 8d1327f..51624a1 100644
--- a/x86_64-w64-mingw32/lib/libvdsdyndr.a
+++ b/x86_64-w64-mingw32/lib/libvdsdyndr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvdsutil.a b/x86_64-w64-mingw32/lib/libvdsutil.a
index 52108c7..20bbbb1 100644
--- a/x86_64-w64-mingw32/lib/libvdsutil.a
+++ b/x86_64-w64-mingw32/lib/libvdsutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvdswmi.a b/x86_64-w64-mingw32/lib/libvdswmi.a
index fe17b4c..83a3ac7 100644
--- a/x86_64-w64-mingw32/lib/libvdswmi.a
+++ b/x86_64-w64-mingw32/lib/libvdswmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libverifier.a b/x86_64-w64-mingw32/lib/libverifier.a
index 3ce95df..d5d53d0 100644
--- a/x86_64-w64-mingw32/lib/libverifier.a
+++ b/x86_64-w64-mingw32/lib/libverifier.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libversion.a b/x86_64-w64-mingw32/lib/libversion.a
index 87c3ecb..1a9ef6d 100644
--- a/x86_64-w64-mingw32/lib/libversion.a
+++ b/x86_64-w64-mingw32/lib/libversion.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvfw32.a b/x86_64-w64-mingw32/lib/libvfw32.a
index 7724bcc..19d7ff8 100644
--- a/x86_64-w64-mingw32/lib/libvfw32.a
+++ b/x86_64-w64-mingw32/lib/libvfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvgx.a b/x86_64-w64-mingw32/lib/libvgx.a
index 660c321..04fa1da 100644
--- a/x86_64-w64-mingw32/lib/libvgx.a
+++ b/x86_64-w64-mingw32/lib/libvgx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libviewprov.a b/x86_64-w64-mingw32/lib/libviewprov.a
index 5378983..1b542d0 100644
--- a/x86_64-w64-mingw32/lib/libviewprov.a
+++ b/x86_64-w64-mingw32/lib/libviewprov.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvirtdisk.a b/x86_64-w64-mingw32/lib/libvirtdisk.a
new file mode 100644
index 0000000..af81854
--- /dev/null
+++ b/x86_64-w64-mingw32/lib/libvirtdisk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvmx_mode.a b/x86_64-w64-mingw32/lib/libvmx_mode.a
index e02361e..6a7a57d 100644
--- a/x86_64-w64-mingw32/lib/libvmx_mode.a
+++ b/x86_64-w64-mingw32/lib/libvmx_mode.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvss_ps.a b/x86_64-w64-mingw32/lib/libvss_ps.a
index 0886cea..215a4de 100644
--- a/x86_64-w64-mingw32/lib/libvss_ps.a
+++ b/x86_64-w64-mingw32/lib/libvss_ps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvssapi.a b/x86_64-w64-mingw32/lib/libvssapi.a
index a36e8e1..98017dc 100644
--- a/x86_64-w64-mingw32/lib/libvssapi.a
+++ b/x86_64-w64-mingw32/lib/libvssapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvsstrace.a b/x86_64-w64-mingw32/lib/libvsstrace.a
index 3520018..26f445a 100644
--- a/x86_64-w64-mingw32/lib/libvsstrace.a
+++ b/x86_64-w64-mingw32/lib/libvsstrace.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libvsswmi.a b/x86_64-w64-mingw32/lib/libvsswmi.a
index 5d7182e..b32434b 100644
--- a/x86_64-w64-mingw32/lib/libvsswmi.a
+++ b/x86_64-w64-mingw32/lib/libvsswmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw32time.a b/x86_64-w64-mingw32/lib/libw32time.a
index f0d095a..de2ee59 100644
--- a/x86_64-w64-mingw32/lib/libw32time.a
+++ b/x86_64-w64-mingw32/lib/libw32time.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw32topl.a b/x86_64-w64-mingw32/lib/libw32topl.a
index 7eb6b56..d94d728 100644
--- a/x86_64-w64-mingw32/lib/libw32topl.a
+++ b/x86_64-w64-mingw32/lib/libw32topl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3cache.a b/x86_64-w64-mingw32/lib/libw3cache.a
index c780c0b..adbb854 100644
--- a/x86_64-w64-mingw32/lib/libw3cache.a
+++ b/x86_64-w64-mingw32/lib/libw3cache.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3comlog.a b/x86_64-w64-mingw32/lib/libw3comlog.a
index 8695bca..9c2b3bd 100644
--- a/x86_64-w64-mingw32/lib/libw3comlog.a
+++ b/x86_64-w64-mingw32/lib/libw3comlog.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3core.a b/x86_64-w64-mingw32/lib/libw3core.a
index c413084..281aef8 100644
--- a/x86_64-w64-mingw32/lib/libw3core.a
+++ b/x86_64-w64-mingw32/lib/libw3core.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3ctrlps.a b/x86_64-w64-mingw32/lib/libw3ctrlps.a
index 452f075..69a21f1 100644
--- a/x86_64-w64-mingw32/lib/libw3ctrlps.a
+++ b/x86_64-w64-mingw32/lib/libw3ctrlps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3ctrs.a b/x86_64-w64-mingw32/lib/libw3ctrs.a
index 735b99f..ca66160 100644
--- a/x86_64-w64-mingw32/lib/libw3ctrs.a
+++ b/x86_64-w64-mingw32/lib/libw3ctrs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3dt.a b/x86_64-w64-mingw32/lib/libw3dt.a
index c205065..6e3d9ac 100644
--- a/x86_64-w64-mingw32/lib/libw3dt.a
+++ b/x86_64-w64-mingw32/lib/libw3dt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3ext.a b/x86_64-w64-mingw32/lib/libw3ext.a
index 3c3d5b6..e68dc55 100644
--- a/x86_64-w64-mingw32/lib/libw3ext.a
+++ b/x86_64-w64-mingw32/lib/libw3ext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3isapi.a b/x86_64-w64-mingw32/lib/libw3isapi.a
index 6d6a501..aef0d11 100644
--- a/x86_64-w64-mingw32/lib/libw3isapi.a
+++ b/x86_64-w64-mingw32/lib/libw3isapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3ssl.a b/x86_64-w64-mingw32/lib/libw3ssl.a
index 8e773ff..d7d99a8 100644
--- a/x86_64-w64-mingw32/lib/libw3ssl.a
+++ b/x86_64-w64-mingw32/lib/libw3ssl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libw3tp.a b/x86_64-w64-mingw32/lib/libw3tp.a
index 1ff0b1a..8c9ab12 100644
--- a/x86_64-w64-mingw32/lib/libw3tp.a
+++ b/x86_64-w64-mingw32/lib/libw3tp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwab32.a b/x86_64-w64-mingw32/lib/libwab32.a
index 5426b94..26a2f79 100644
--- a/x86_64-w64-mingw32/lib/libwab32.a
+++ b/x86_64-w64-mingw32/lib/libwab32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwabimp.a b/x86_64-w64-mingw32/lib/libwabimp.a
index 138ba1a..5d856e6 100644
--- a/x86_64-w64-mingw32/lib/libwabimp.a
+++ b/x86_64-w64-mingw32/lib/libwabimp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwamreg.a b/x86_64-w64-mingw32/lib/libwamreg.a
index b5f62f0..1947a84 100644
--- a/x86_64-w64-mingw32/lib/libwamreg.a
+++ b/x86_64-w64-mingw32/lib/libwamreg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwamregps.a b/x86_64-w64-mingw32/lib/libwamregps.a
index d3ed740..44fac14 100644
--- a/x86_64-w64-mingw32/lib/libwamregps.a
+++ b/x86_64-w64-mingw32/lib/libwamregps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwbemcore.a b/x86_64-w64-mingw32/lib/libwbemcore.a
index 00d48dd..95eabc0 100644
--- a/x86_64-w64-mingw32/lib/libwbemcore.a
+++ b/x86_64-w64-mingw32/lib/libwbemcore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwbemupgd.a b/x86_64-w64-mingw32/lib/libwbemupgd.a
index ac879f9..3470874 100644
--- a/x86_64-w64-mingw32/lib/libwbemupgd.a
+++ b/x86_64-w64-mingw32/lib/libwbemupgd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwbemuuid.a b/x86_64-w64-mingw32/lib/libwbemuuid.a
index 75745f3..f19a738 100644
--- a/x86_64-w64-mingw32/lib/libwbemuuid.a
+++ b/x86_64-w64-mingw32/lib/libwbemuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdigest.a b/x86_64-w64-mingw32/lib/libwdigest.a
index 074e14f..484dd31 100644
--- a/x86_64-w64-mingw32/lib/libwdigest.a
+++ b/x86_64-w64-mingw32/lib/libwdigest.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdmaud.a b/x86_64-w64-mingw32/lib/libwdmaud.a
index 8a4897e..7d79c62 100644
--- a/x86_64-w64-mingw32/lib/libwdmaud.a
+++ b/x86_64-w64-mingw32/lib/libwdmaud.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdsclient.a b/x86_64-w64-mingw32/lib/libwdsclient.a
index 73b693a..9189d61 100644
--- a/x86_64-w64-mingw32/lib/libwdsclient.a
+++ b/x86_64-w64-mingw32/lib/libwdsclient.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdsclientapi.a b/x86_64-w64-mingw32/lib/libwdsclientapi.a
index 8621f3b..e12a603 100644
--- a/x86_64-w64-mingw32/lib/libwdsclientapi.a
+++ b/x86_64-w64-mingw32/lib/libwdsclientapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdscore.a b/x86_64-w64-mingw32/lib/libwdscore.a
index 037470c..be936be 100644
--- a/x86_64-w64-mingw32/lib/libwdscore.a
+++ b/x86_64-w64-mingw32/lib/libwdscore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdscsl.a b/x86_64-w64-mingw32/lib/libwdscsl.a
index 5525c81..65e558f 100644
--- a/x86_64-w64-mingw32/lib/libwdscsl.a
+++ b/x86_64-w64-mingw32/lib/libwdscsl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdsimage.a b/x86_64-w64-mingw32/lib/libwdsimage.a
index 3ad2c18..22a548e 100644
--- a/x86_64-w64-mingw32/lib/libwdsimage.a
+++ b/x86_64-w64-mingw32/lib/libwdsimage.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdstptc.a b/x86_64-w64-mingw32/lib/libwdstptc.a
index 62273ce..40c8536 100644
--- a/x86_64-w64-mingw32/lib/libwdstptc.a
+++ b/x86_64-w64-mingw32/lib/libwdstptc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdsupgcompl.a b/x86_64-w64-mingw32/lib/libwdsupgcompl.a
index ae39b68..0475fb2 100644
--- a/x86_64-w64-mingw32/lib/libwdsupgcompl.a
+++ b/x86_64-w64-mingw32/lib/libwdsupgcompl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwdsutil.a b/x86_64-w64-mingw32/lib/libwdsutil.a
index 484bb36..c5042da 100644
--- a/x86_64-w64-mingw32/lib/libwdsutil.a
+++ b/x86_64-w64-mingw32/lib/libwdsutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwebcheck.a b/x86_64-w64-mingw32/lib/libwebcheck.a
index 6f4f10d..3604d4b 100644
--- a/x86_64-w64-mingw32/lib/libwebcheck.a
+++ b/x86_64-w64-mingw32/lib/libwebcheck.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwebclnt.a b/x86_64-w64-mingw32/lib/libwebclnt.a
index b849af8..406da1d 100644
--- a/x86_64-w64-mingw32/lib/libwebclnt.a
+++ b/x86_64-w64-mingw32/lib/libwebclnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwebhits.a b/x86_64-w64-mingw32/lib/libwebhits.a
index f1bf882..25b834a 100644
--- a/x86_64-w64-mingw32/lib/libwebhits.a
+++ b/x86_64-w64-mingw32/lib/libwebhits.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwecapi.a b/x86_64-w64-mingw32/lib/libwecapi.a
index d7a8695..702645b 100644
--- a/x86_64-w64-mingw32/lib/libwecapi.a
+++ b/x86_64-w64-mingw32/lib/libwecapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwer.a b/x86_64-w64-mingw32/lib/libwer.a
index 1f020c8..e7fe750 100644
--- a/x86_64-w64-mingw32/lib/libwer.a
+++ b/x86_64-w64-mingw32/lib/libwer.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwevtapi.a b/x86_64-w64-mingw32/lib/libwevtapi.a
index f0eb2f8..e94b12d 100644
--- a/x86_64-w64-mingw32/lib/libwevtapi.a
+++ b/x86_64-w64-mingw32/lib/libwevtapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwevtfwd.a b/x86_64-w64-mingw32/lib/libwevtfwd.a
index 9b87378..fe35d4d 100644
--- a/x86_64-w64-mingw32/lib/libwevtfwd.a
+++ b/x86_64-w64-mingw32/lib/libwevtfwd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwiadss.a b/x86_64-w64-mingw32/lib/libwiadss.a
index 3c5803b..7f5c2dd 100644
--- a/x86_64-w64-mingw32/lib/libwiadss.a
+++ b/x86_64-w64-mingw32/lib/libwiadss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwiarpc.a b/x86_64-w64-mingw32/lib/libwiarpc.a
index 970586e..9cf6d85 100644
--- a/x86_64-w64-mingw32/lib/libwiarpc.a
+++ b/x86_64-w64-mingw32/lib/libwiarpc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwiaservc.a b/x86_64-w64-mingw32/lib/libwiaservc.a
index 02bb228..fe60fd3 100644
--- a/x86_64-w64-mingw32/lib/libwiaservc.a
+++ b/x86_64-w64-mingw32/lib/libwiaservc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwiashext.a b/x86_64-w64-mingw32/lib/libwiashext.a
index f8caceb..e133e75 100644
--- a/x86_64-w64-mingw32/lib/libwiashext.a
+++ b/x86_64-w64-mingw32/lib/libwiashext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwin32spl.a b/x86_64-w64-mingw32/lib/libwin32spl.a
index d9b4a50..0429aa9 100644
--- a/x86_64-w64-mingw32/lib/libwin32spl.a
+++ b/x86_64-w64-mingw32/lib/libwin32spl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwindowscodecs.a b/x86_64-w64-mingw32/lib/libwindowscodecs.a
index e6eed3d..da91199 100644
--- a/x86_64-w64-mingw32/lib/libwindowscodecs.a
+++ b/x86_64-w64-mingw32/lib/libwindowscodecs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinfax.a b/x86_64-w64-mingw32/lib/libwinfax.a
index 63999a7..2b756f4 100644
--- a/x86_64-w64-mingw32/lib/libwinfax.a
+++ b/x86_64-w64-mingw32/lib/libwinfax.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinhttp.a b/x86_64-w64-mingw32/lib/libwinhttp.a
index 9959482..7a58e7d 100644
--- a/x86_64-w64-mingw32/lib/libwinhttp.a
+++ b/x86_64-w64-mingw32/lib/libwinhttp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwininet.a b/x86_64-w64-mingw32/lib/libwininet.a
index 3cf53cd..6614014 100644
--- a/x86_64-w64-mingw32/lib/libwininet.a
+++ b/x86_64-w64-mingw32/lib/libwininet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinipsec.a b/x86_64-w64-mingw32/lib/libwinipsec.a
index 3e16a34..1521287 100644
--- a/x86_64-w64-mingw32/lib/libwinipsec.a
+++ b/x86_64-w64-mingw32/lib/libwinipsec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinmm.a b/x86_64-w64-mingw32/lib/libwinmm.a
index 0e89ad3..ae973a5 100644
--- a/x86_64-w64-mingw32/lib/libwinmm.a
+++ b/x86_64-w64-mingw32/lib/libwinmm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinpthread.a b/x86_64-w64-mingw32/lib/libwinpthread.a
index 77d7159..0190720 100644
--- a/x86_64-w64-mingw32/lib/libwinpthread.a
+++ b/x86_64-w64-mingw32/lib/libwinpthread.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinpthread.dll.a b/x86_64-w64-mingw32/lib/libwinpthread.dll.a
index 70eb213..07a101d 100755
--- a/x86_64-w64-mingw32/lib/libwinpthread.dll.a
+++ b/x86_64-w64-mingw32/lib/libwinpthread.dll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinrnr.a b/x86_64-w64-mingw32/lib/libwinrnr.a
index e84c48a..361dc8b 100644
--- a/x86_64-w64-mingw32/lib/libwinrnr.a
+++ b/x86_64-w64-mingw32/lib/libwinrnr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinscard.a b/x86_64-w64-mingw32/lib/libwinscard.a
index fa7a6c8..fff3448 100644
--- a/x86_64-w64-mingw32/lib/libwinscard.a
+++ b/x86_64-w64-mingw32/lib/libwinscard.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinspool.a b/x86_64-w64-mingw32/lib/libwinspool.a
index 011c46d..669b366 100644
--- a/x86_64-w64-mingw32/lib/libwinspool.a
+++ b/x86_64-w64-mingw32/lib/libwinspool.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinsrv.a b/x86_64-w64-mingw32/lib/libwinsrv.a
index 82d13f7..ed36cfc 100644
--- a/x86_64-w64-mingw32/lib/libwinsrv.a
+++ b/x86_64-w64-mingw32/lib/libwinsrv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinsta.a b/x86_64-w64-mingw32/lib/libwinsta.a
index 33a2e78..b74f110 100644
--- a/x86_64-w64-mingw32/lib/libwinsta.a
+++ b/x86_64-w64-mingw32/lib/libwinsta.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwintrust.a b/x86_64-w64-mingw32/lib/libwintrust.a
index 7d537bc..8ce309b 100644
--- a/x86_64-w64-mingw32/lib/libwintrust.a
+++ b/x86_64-w64-mingw32/lib/libwintrust.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwinusb.a b/x86_64-w64-mingw32/lib/libwinusb.a
index 489e559..107a044 100644
--- a/x86_64-w64-mingw32/lib/libwinusb.a
+++ b/x86_64-w64-mingw32/lib/libwinusb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwkssvc.a b/x86_64-w64-mingw32/lib/libwkssvc.a
index 55d00bb..bb5c478 100644
--- a/x86_64-w64-mingw32/lib/libwkssvc.a
+++ b/x86_64-w64-mingw32/lib/libwkssvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwlanapi.a b/x86_64-w64-mingw32/lib/libwlanapi.a
index 30de1bf..11b6de9 100644
--- a/x86_64-w64-mingw32/lib/libwlanapi.a
+++ b/x86_64-w64-mingw32/lib/libwlanapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwlanui.a b/x86_64-w64-mingw32/lib/libwlanui.a
index 989e9d1..4bf0e04 100644
--- a/x86_64-w64-mingw32/lib/libwlanui.a
+++ b/x86_64-w64-mingw32/lib/libwlanui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwlanutil.a b/x86_64-w64-mingw32/lib/libwlanutil.a
index 074fdde..a7d76a7 100644
--- a/x86_64-w64-mingw32/lib/libwlanutil.a
+++ b/x86_64-w64-mingw32/lib/libwlanutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwldap32.a b/x86_64-w64-mingw32/lib/libwldap32.a
index ae8df01..ef1b368 100644
--- a/x86_64-w64-mingw32/lib/libwldap32.a
+++ b/x86_64-w64-mingw32/lib/libwldap32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwlnotify.a b/x86_64-w64-mingw32/lib/libwlnotify.a
index 4435273..a1aa8e4 100644
--- a/x86_64-w64-mingw32/lib/libwlnotify.a
+++ b/x86_64-w64-mingw32/lib/libwlnotify.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwlstore.a b/x86_64-w64-mingw32/lib/libwlstore.a
index 28abda4..c480212 100644
--- a/x86_64-w64-mingw32/lib/libwlstore.a
+++ b/x86_64-w64-mingw32/lib/libwlstore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmcodecdspuuid.a b/x86_64-w64-mingw32/lib/libwmcodecdspuuid.a
index ba8db1a..8eba101 100644
--- a/x86_64-w64-mingw32/lib/libwmcodecdspuuid.a
+++ b/x86_64-w64-mingw32/lib/libwmcodecdspuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmi.a b/x86_64-w64-mingw32/lib/libwmi.a
index 2f20d1a..e9eb9fe 100644
--- a/x86_64-w64-mingw32/lib/libwmi.a
+++ b/x86_64-w64-mingw32/lib/libwmi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmi2xml.a b/x86_64-w64-mingw32/lib/libwmi2xml.a
index 01c61bd..dd838f2 100644
--- a/x86_64-w64-mingw32/lib/libwmi2xml.a
+++ b/x86_64-w64-mingw32/lib/libwmi2xml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmiaprpl.a b/x86_64-w64-mingw32/lib/libwmiaprpl.a
index f70d744..cbac0a6 100644
--- a/x86_64-w64-mingw32/lib/libwmiaprpl.a
+++ b/x86_64-w64-mingw32/lib/libwmiaprpl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmilib.a b/x86_64-w64-mingw32/lib/libwmilib.a
index 79d7894..0ba8e4f 100644
--- a/x86_64-w64-mingw32/lib/libwmilib.a
+++ b/x86_64-w64-mingw32/lib/libwmilib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmiprop.a b/x86_64-w64-mingw32/lib/libwmiprop.a
index f52b615..ea029c4 100644
--- a/x86_64-w64-mingw32/lib/libwmiprop.a
+++ b/x86_64-w64-mingw32/lib/libwmiprop.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwmisvc.a b/x86_64-w64-mingw32/lib/libwmisvc.a
index 5477c0f..8d9ae14 100644
--- a/x86_64-w64-mingw32/lib/libwmisvc.a
+++ b/x86_64-w64-mingw32/lib/libwmisvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwow64.a b/x86_64-w64-mingw32/lib/libwow64.a
index e7e9fcd..fb5f69b 100644
--- a/x86_64-w64-mingw32/lib/libwow64.a
+++ b/x86_64-w64-mingw32/lib/libwow64.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwow64cpu.a b/x86_64-w64-mingw32/lib/libwow64cpu.a
index 741c770..0a1b15d 100644
--- a/x86_64-w64-mingw32/lib/libwow64cpu.a
+++ b/x86_64-w64-mingw32/lib/libwow64cpu.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwow64mib.a b/x86_64-w64-mingw32/lib/libwow64mib.a
index 9bcdf5e..a5d56bf 100644
--- a/x86_64-w64-mingw32/lib/libwow64mib.a
+++ b/x86_64-w64-mingw32/lib/libwow64mib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwow64win.a b/x86_64-w64-mingw32/lib/libwow64win.a
index 71662d7..31e30fc 100644
--- a/x86_64-w64-mingw32/lib/libwow64win.a
+++ b/x86_64-w64-mingw32/lib/libwow64win.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwpd_ci.a b/x86_64-w64-mingw32/lib/libwpd_ci.a
index e183295..a4c3e46 100644
--- a/x86_64-w64-mingw32/lib/libwpd_ci.a
+++ b/x86_64-w64-mingw32/lib/libwpd_ci.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libws2_32.a b/x86_64-w64-mingw32/lib/libws2_32.a
index c294f2b..72371df 100644
--- a/x86_64-w64-mingw32/lib/libws2_32.a
+++ b/x86_64-w64-mingw32/lib/libws2_32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libws2help.a b/x86_64-w64-mingw32/lib/libws2help.a
index dc220d0..9fd56f7 100644
--- a/x86_64-w64-mingw32/lib/libws2help.a
+++ b/x86_64-w64-mingw32/lib/libws2help.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwscsvc.a b/x86_64-w64-mingw32/lib/libwscsvc.a
index e2700f7..ad1a516 100644
--- a/x86_64-w64-mingw32/lib/libwscsvc.a
+++ b/x86_64-w64-mingw32/lib/libwscsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwsdapi.a b/x86_64-w64-mingw32/lib/libwsdapi.a
index c2f1adb..8e977e1 100644
--- a/x86_64-w64-mingw32/lib/libwsdapi.a
+++ b/x86_64-w64-mingw32/lib/libwsdapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwshatm.a b/x86_64-w64-mingw32/lib/libwshatm.a
index fc5f9ab..93b6f37 100644
--- a/x86_64-w64-mingw32/lib/libwshatm.a
+++ b/x86_64-w64-mingw32/lib/libwshatm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwshbth.a b/x86_64-w64-mingw32/lib/libwshbth.a
index 343a73e..3705334 100644
--- a/x86_64-w64-mingw32/lib/libwshbth.a
+++ b/x86_64-w64-mingw32/lib/libwshbth.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwshcon.a b/x86_64-w64-mingw32/lib/libwshcon.a
index 79f721c..6059afe 100644
--- a/x86_64-w64-mingw32/lib/libwshcon.a
+++ b/x86_64-w64-mingw32/lib/libwshcon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwsock32.a b/x86_64-w64-mingw32/lib/libwsock32.a
index 088ae4a..0ad470d 100644
--- a/x86_64-w64-mingw32/lib/libwsock32.a
+++ b/x86_64-w64-mingw32/lib/libwsock32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libwtsapi32.a b/x86_64-w64-mingw32/lib/libwtsapi32.a
index e046e91..52a9221 100644
--- a/x86_64-w64-mingw32/lib/libwtsapi32.a
+++ b/x86_64-w64-mingw32/lib/libwtsapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio.a b/x86_64-w64-mingw32/lib/libx3daudio.a
index 4b4a1b8..0771f9c 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_2.a b/x86_64-w64-mingw32/lib/libx3daudio1_2.a
index 7d3fb29..e65a302 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_2.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_3.a b/x86_64-w64-mingw32/lib/libx3daudio1_3.a
index fffb750..d991977 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_3.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_4.a b/x86_64-w64-mingw32/lib/libx3daudio1_4.a
index 38f85e7..2f6c96e 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_4.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_5.a b/x86_64-w64-mingw32/lib/libx3daudio1_5.a
index 5cd3566..11c0d61 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_5.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_6.a b/x86_64-w64-mingw32/lib/libx3daudio1_6.a
index c8c3e34..5cc9027 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_6.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_6.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudio1_7.a b/x86_64-w64-mingw32/lib/libx3daudio1_7.a
index bace563..4dc7999 100644
--- a/x86_64-w64-mingw32/lib/libx3daudio1_7.a
+++ b/x86_64-w64-mingw32/lib/libx3daudio1_7.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libx3daudiod1_7.a b/x86_64-w64-mingw32/lib/libx3daudiod1_7.a
index efebf4c..3d83971 100644
--- a/x86_64-w64-mingw32/lib/libx3daudiod1_7.a
+++ b/x86_64-w64-mingw32/lib/libx3daudiod1_7.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx.a b/x86_64-w64-mingw32/lib/libxapofx.a
index ab26cfd..ff0bdc5 100644
--- a/x86_64-w64-mingw32/lib/libxapofx.a
+++ b/x86_64-w64-mingw32/lib/libxapofx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_0.a b/x86_64-w64-mingw32/lib/libxapofx1_0.a
index deba65f..e5ae237 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_0.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_1.a b/x86_64-w64-mingw32/lib/libxapofx1_1.a
index b5655d3..e578391 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_1.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_2.a b/x86_64-w64-mingw32/lib/libxapofx1_2.a
index c666c6a..24a0cb9 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_2.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_3.a b/x86_64-w64-mingw32/lib/libxapofx1_3.a
index 59c1d00..8f009ed 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_3.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_4.a b/x86_64-w64-mingw32/lib/libxapofx1_4.a
index 3730e9c..3c0098f 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_4.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofx1_5.a b/x86_64-w64-mingw32/lib/libxapofx1_5.a
index f28c6a8..233b5f0 100644
--- a/x86_64-w64-mingw32/lib/libxapofx1_5.a
+++ b/x86_64-w64-mingw32/lib/libxapofx1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxapofxd1_5.a b/x86_64-w64-mingw32/lib/libxapofxd1_5.a
index b31806b..5cf888f 100644
--- a/x86_64-w64-mingw32/lib/libxapofxd1_5.a
+++ b/x86_64-w64-mingw32/lib/libxapofxd1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxaudio2_8.a b/x86_64-w64-mingw32/lib/libxaudio2_8.a
index 4f0efd9..d224738 100644
--- a/x86_64-w64-mingw32/lib/libxaudio2_8.a
+++ b/x86_64-w64-mingw32/lib/libxaudio2_8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput.a b/x86_64-w64-mingw32/lib/libxinput.a
index 288f4d3..a577cd8 100644
--- a/x86_64-w64-mingw32/lib/libxinput.a
+++ b/x86_64-w64-mingw32/lib/libxinput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput1_1.a b/x86_64-w64-mingw32/lib/libxinput1_1.a
index f404cf4..7f2825b 100644
--- a/x86_64-w64-mingw32/lib/libxinput1_1.a
+++ b/x86_64-w64-mingw32/lib/libxinput1_1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput1_2.a b/x86_64-w64-mingw32/lib/libxinput1_2.a
index a5f650f..e23f870 100644
--- a/x86_64-w64-mingw32/lib/libxinput1_2.a
+++ b/x86_64-w64-mingw32/lib/libxinput1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput1_3.a b/x86_64-w64-mingw32/lib/libxinput1_3.a
index 3ed6f5c..2dc5e16 100644
--- a/x86_64-w64-mingw32/lib/libxinput1_3.a
+++ b/x86_64-w64-mingw32/lib/libxinput1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput1_4.a b/x86_64-w64-mingw32/lib/libxinput1_4.a
index 3f46463..7ea42fe 100644
--- a/x86_64-w64-mingw32/lib/libxinput1_4.a
+++ b/x86_64-w64-mingw32/lib/libxinput1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libxinput9_1_0.a b/x86_64-w64-mingw32/lib/libxinput9_1_0.a
index bbb4c5b..7628874 100644
--- a/x86_64-w64-mingw32/lib/libxinput9_1_0.a
+++ b/x86_64-w64-mingw32/lib/libxinput9_1_0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/libzoneoc.a b/x86_64-w64-mingw32/lib/libzoneoc.a
index e9a30c3..c5ef9dd 100644
--- a/x86_64-w64-mingw32/lib/libzoneoc.a
+++ b/x86_64-w64-mingw32/lib/libzoneoc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib/txtmode.o b/x86_64-w64-mingw32/lib/txtmode.o
index b431f0f..2b42b00 100644
--- a/x86_64-w64-mingw32/lib/txtmode.o
+++ b/x86_64-w64-mingw32/lib/txtmode.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/CRT_fp10.o b/x86_64-w64-mingw32/lib32/CRT_fp10.o
index 1883365..55072df 100644
--- a/x86_64-w64-mingw32/lib32/CRT_fp10.o
+++ b/x86_64-w64-mingw32/lib32/CRT_fp10.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/CRT_fp8.o b/x86_64-w64-mingw32/lib32/CRT_fp8.o
index 8ac1f59..1153dad 100644
--- a/x86_64-w64-mingw32/lib32/CRT_fp8.o
+++ b/x86_64-w64-mingw32/lib32/CRT_fp8.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/CRT_glob.o b/x86_64-w64-mingw32/lib32/CRT_glob.o
index ae68c6b..f04c685 100644
--- a/x86_64-w64-mingw32/lib32/CRT_glob.o
+++ b/x86_64-w64-mingw32/lib32/CRT_glob.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/CRT_noglob.o b/x86_64-w64-mingw32/lib32/CRT_noglob.o
index 04c9065..b6de955 100644
--- a/x86_64-w64-mingw32/lib32/CRT_noglob.o
+++ b/x86_64-w64-mingw32/lib32/CRT_noglob.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/binmode.o b/x86_64-w64-mingw32/lib32/binmode.o
index 8f42e53..e51a3d2 100644
--- a/x86_64-w64-mingw32/lib32/binmode.o
+++ b/x86_64-w64-mingw32/lib32/binmode.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/crt1.o b/x86_64-w64-mingw32/lib32/crt1.o
index 4cfed49..1bcfbd0 100644
--- a/x86_64-w64-mingw32/lib32/crt1.o
+++ b/x86_64-w64-mingw32/lib32/crt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/crt1u.o b/x86_64-w64-mingw32/lib32/crt1u.o
index 1c8c957..04b4ee7 100644
--- a/x86_64-w64-mingw32/lib32/crt1u.o
+++ b/x86_64-w64-mingw32/lib32/crt1u.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/crt2.o b/x86_64-w64-mingw32/lib32/crt2.o
index 4cfed49..1bcfbd0 100644
--- a/x86_64-w64-mingw32/lib32/crt2.o
+++ b/x86_64-w64-mingw32/lib32/crt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/crt2u.o b/x86_64-w64-mingw32/lib32/crt2u.o
index 1c8c957..04b4ee7 100644
--- a/x86_64-w64-mingw32/lib32/crt2u.o
+++ b/x86_64-w64-mingw32/lib32/crt2u.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/dllcrt1.o b/x86_64-w64-mingw32/lib32/dllcrt1.o
index 1e929a7..e887428 100644
--- a/x86_64-w64-mingw32/lib32/dllcrt1.o
+++ b/x86_64-w64-mingw32/lib32/dllcrt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/dllcrt2.o b/x86_64-w64-mingw32/lib32/dllcrt2.o
index 1e929a7..e887428 100644
--- a/x86_64-w64-mingw32/lib32/dllcrt2.o
+++ b/x86_64-w64-mingw32/lib32/dllcrt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/gcrt0.o b/x86_64-w64-mingw32/lib32/gcrt0.o
index 4974eb5..cdf6794 100644
--- a/x86_64-w64-mingw32/lib32/gcrt0.o
+++ b/x86_64-w64-mingw32/lib32/gcrt0.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/gcrt1.o b/x86_64-w64-mingw32/lib32/gcrt1.o
index 4974eb5..cdf6794 100644
--- a/x86_64-w64-mingw32/lib32/gcrt1.o
+++ b/x86_64-w64-mingw32/lib32/gcrt1.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/gcrt2.o b/x86_64-w64-mingw32/lib32/gcrt2.o
index 4974eb5..cdf6794 100644
--- a/x86_64-w64-mingw32/lib32/gcrt2.o
+++ b/x86_64-w64-mingw32/lib32/gcrt2.o
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libaclui.a b/x86_64-w64-mingw32/lib32/libaclui.a
index a21ffaf..8bcad9f 100644
--- a/x86_64-w64-mingw32/lib32/libaclui.a
+++ b/x86_64-w64-mingw32/lib32/libaclui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libactiveds.a b/x86_64-w64-mingw32/lib32/libactiveds.a
index 59b30d6..b641f50 100644
--- a/x86_64-w64-mingw32/lib32/libactiveds.a
+++ b/x86_64-w64-mingw32/lib32/libactiveds.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libadsldpc.a b/x86_64-w64-mingw32/lib32/libadsldpc.a
index 19fd451..d190b2e 100644
--- a/x86_64-w64-mingw32/lib32/libadsldpc.a
+++ b/x86_64-w64-mingw32/lib32/libadsldpc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libadvapi32.a b/x86_64-w64-mingw32/lib32/libadvapi32.a
index 1089cba..da4c135 100644
--- a/x86_64-w64-mingw32/lib32/libadvapi32.a
+++ b/x86_64-w64-mingw32/lib32/libadvapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libamstrmid.a b/x86_64-w64-mingw32/lib32/libamstrmid.a
new file mode 100644
index 0000000..fb44ea8
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/libamstrmid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libapcups.a b/x86_64-w64-mingw32/lib32/libapcups.a
index 8d02b65..97dab46 100644
--- a/x86_64-w64-mingw32/lib32/libapcups.a
+++ b/x86_64-w64-mingw32/lib32/libapcups.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libauthz.a b/x86_64-w64-mingw32/lib32/libauthz.a
index 5552294..40ff357 100644
--- a/x86_64-w64-mingw32/lib32/libauthz.a
+++ b/x86_64-w64-mingw32/lib32/libauthz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libavicap32.a b/x86_64-w64-mingw32/lib32/libavicap32.a
index 837d399..73c9c6e 100644
--- a/x86_64-w64-mingw32/lib32/libavicap32.a
+++ b/x86_64-w64-mingw32/lib32/libavicap32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libavifil32.a b/x86_64-w64-mingw32/lib32/libavifil32.a
index 03936a0..60e59ea 100644
--- a/x86_64-w64-mingw32/lib32/libavifil32.a
+++ b/x86_64-w64-mingw32/lib32/libavifil32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libavrt.a b/x86_64-w64-mingw32/lib32/libavrt.a
index 114809d..bb6eff5 100644
--- a/x86_64-w64-mingw32/lib32/libavrt.a
+++ b/x86_64-w64-mingw32/lib32/libavrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libbcrypt.a b/x86_64-w64-mingw32/lib32/libbcrypt.a
index c8046cf..ea4f1ba 100644
--- a/x86_64-w64-mingw32/lib32/libbcrypt.a
+++ b/x86_64-w64-mingw32/lib32/libbcrypt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libbootvid.a b/x86_64-w64-mingw32/lib32/libbootvid.a
index be99c01..0b3fcbd 100644
--- a/x86_64-w64-mingw32/lib32/libbootvid.a
+++ b/x86_64-w64-mingw32/lib32/libbootvid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libbrowcli.a b/x86_64-w64-mingw32/lib32/libbrowcli.a
index fd89a15..e4ddf24 100644
--- a/x86_64-w64-mingw32/lib32/libbrowcli.a
+++ b/x86_64-w64-mingw32/lib32/libbrowcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libbthprops.a b/x86_64-w64-mingw32/lib32/libbthprops.a
index 399513d..3348244 100644
--- a/x86_64-w64-mingw32/lib32/libbthprops.a
+++ b/x86_64-w64-mingw32/lib32/libbthprops.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcabinet.a b/x86_64-w64-mingw32/lib32/libcabinet.a
index d6863c3..e5e21ac 100644
--- a/x86_64-w64-mingw32/lib32/libcabinet.a
+++ b/x86_64-w64-mingw32/lib32/libcabinet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcap.a b/x86_64-w64-mingw32/lib32/libcap.a
index d1beebe..9aaef41 100644
--- a/x86_64-w64-mingw32/lib32/libcap.a
+++ b/x86_64-w64-mingw32/lib32/libcap.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcfgmgr32.a b/x86_64-w64-mingw32/lib32/libcfgmgr32.a
index 29377cc..d66f75c 100644
--- a/x86_64-w64-mingw32/lib32/libcfgmgr32.a
+++ b/x86_64-w64-mingw32/lib32/libcfgmgr32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libclasspnp.a b/x86_64-w64-mingw32/lib32/libclasspnp.a
index d3661fc..787fa96 100644
--- a/x86_64-w64-mingw32/lib32/libclasspnp.a
+++ b/x86_64-w64-mingw32/lib32/libclasspnp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libclfsw32.a b/x86_64-w64-mingw32/lib32/libclfsw32.a
index 70325ec..31b27e3 100644
--- a/x86_64-w64-mingw32/lib32/libclfsw32.a
+++ b/x86_64-w64-mingw32/lib32/libclfsw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libclusapi.a b/x86_64-w64-mingw32/lib32/libclusapi.a
index d2313ca..8d73a0d 100644
--- a/x86_64-w64-mingw32/lib32/libclusapi.a
+++ b/x86_64-w64-mingw32/lib32/libclusapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcmutil.a b/x86_64-w64-mingw32/lib32/libcmutil.a
index 21a89c5..2a6012e 100644
--- a/x86_64-w64-mingw32/lib32/libcmutil.a
+++ b/x86_64-w64-mingw32/lib32/libcmutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcomctl32.a b/x86_64-w64-mingw32/lib32/libcomctl32.a
index 2611d29..685f52f 100644
--- a/x86_64-w64-mingw32/lib32/libcomctl32.a
+++ b/x86_64-w64-mingw32/lib32/libcomctl32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcomdlg32.a b/x86_64-w64-mingw32/lib32/libcomdlg32.a
index fa5787f..c3ce78a 100644
--- a/x86_64-w64-mingw32/lib32/libcomdlg32.a
+++ b/x86_64-w64-mingw32/lib32/libcomdlg32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libconnect.a b/x86_64-w64-mingw32/lib32/libconnect.a
index 7d05e39..e8a206d 100644
--- a/x86_64-w64-mingw32/lib32/libconnect.a
+++ b/x86_64-w64-mingw32/lib32/libconnect.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcredui.a b/x86_64-w64-mingw32/lib32/libcredui.a
index 6849e76..a0d647a 100644
--- a/x86_64-w64-mingw32/lib32/libcredui.a
+++ b/x86_64-w64-mingw32/lib32/libcredui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcrtdll.a b/x86_64-w64-mingw32/lib32/libcrtdll.a
index 6d89e3a..7582869 100644
--- a/x86_64-w64-mingw32/lib32/libcrtdll.a
+++ b/x86_64-w64-mingw32/lib32/libcrtdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcrypt32.a b/x86_64-w64-mingw32/lib32/libcrypt32.a
index 00ace1d..e042d42 100644
--- a/x86_64-w64-mingw32/lib32/libcrypt32.a
+++ b/x86_64-w64-mingw32/lib32/libcrypt32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcryptnet.a b/x86_64-w64-mingw32/lib32/libcryptnet.a
index 678da61..cc705cb 100644
--- a/x86_64-w64-mingw32/lib32/libcryptnet.a
+++ b/x86_64-w64-mingw32/lib32/libcryptnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcryptsp.a b/x86_64-w64-mingw32/lib32/libcryptsp.a
index bdc1bc4..21d3ccd 100644
--- a/x86_64-w64-mingw32/lib32/libcryptsp.a
+++ b/x86_64-w64-mingw32/lib32/libcryptsp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcryptxml.a b/x86_64-w64-mingw32/lib32/libcryptxml.a
index fdb6f64..b29ed17 100644
--- a/x86_64-w64-mingw32/lib32/libcryptxml.a
+++ b/x86_64-w64-mingw32/lib32/libcryptxml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libcscapi.a b/x86_64-w64-mingw32/lib32/libcscapi.a
index 1cf5c66..4ecb698 100644
--- a/x86_64-w64-mingw32/lib32/libcscapi.a
+++ b/x86_64-w64-mingw32/lib32/libcscapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libctl3d32.a b/x86_64-w64-mingw32/lib32/libctl3d32.a
index a94235a..a138b15 100644
--- a/x86_64-w64-mingw32/lib32/libctl3d32.a
+++ b/x86_64-w64-mingw32/lib32/libctl3d32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd2d1.a b/x86_64-w64-mingw32/lib32/libd2d1.a
index e6b2270..d6c6c3d 100644
--- a/x86_64-w64-mingw32/lib32/libd2d1.a
+++ b/x86_64-w64-mingw32/lib32/libd2d1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3d11.a b/x86_64-w64-mingw32/lib32/libd3d11.a
index ee88ec8..097a6b5 100644
--- a/x86_64-w64-mingw32/lib32/libd3d11.a
+++ b/x86_64-w64-mingw32/lib32/libd3d11.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3d8.a b/x86_64-w64-mingw32/lib32/libd3d8.a
index f47efba..383ca36 100644
--- a/x86_64-w64-mingw32/lib32/libd3d8.a
+++ b/x86_64-w64-mingw32/lib32/libd3d8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3d9.a b/x86_64-w64-mingw32/lib32/libd3d9.a
index 50af40c..5536e49 100644
--- a/x86_64-w64-mingw32/lib32/libd3d9.a
+++ b/x86_64-w64-mingw32/lib32/libd3d9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler.a b/x86_64-w64-mingw32/lib32/libd3dcompiler.a
index 85a8903..28002db 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_33.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_33.a
index 3e57068..a951cd1 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_33.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_34.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_34.a
index 84fd61f..91c5aab 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_34.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_35.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_35.a
index 0817426..eb5f3d7 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_35.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_36.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_36.a
index 58e8a31..d845093 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_36.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_37.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_37.a
index 62542ff..3706572 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_37.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_38.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_38.a
index b8d4d9c..dc7e668 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_38.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_39.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_39.a
index cd57e4a..ad7f737 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_39.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_40.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_40.a
index e00ebe4..93c5e13 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_40.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_41.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_41.a
index e2773df..84a8b93 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_41.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_42.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_42.a
index 1e94e96..ccbbe8c 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_42.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_43.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_43.a
index 0534624..f13705f 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_43.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_46.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_46.a
index 2e46c92..5b07ca9 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcompiler_46.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_46.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcompiler_47.a b/x86_64-w64-mingw32/lib32/libd3dcompiler_47.a
new file mode 100644
index 0000000..64f9670
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/libd3dcompiler_47.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcsx_46.a b/x86_64-w64-mingw32/lib32/libd3dcsx_46.a
index ceaada8..4824a3b 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcsx_46.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcsx_46.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcsxd.a b/x86_64-w64-mingw32/lib32/libd3dcsxd.a
index f7a8dea..5d6c616 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcsxd.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcsxd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dcsxd_43.a b/x86_64-w64-mingw32/lib32/libd3dcsxd_43.a
index 9160d50..2b0a777 100644
--- a/x86_64-w64-mingw32/lib32/libd3dcsxd_43.a
+++ b/x86_64-w64-mingw32/lib32/libd3dcsxd_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dim.a b/x86_64-w64-mingw32/lib32/libd3dim.a
index 9bf1910..8136d78 100644
--- a/x86_64-w64-mingw32/lib32/libd3dim.a
+++ b/x86_64-w64-mingw32/lib32/libd3dim.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3drm.a b/x86_64-w64-mingw32/lib32/libd3drm.a
index af62b30..cefa089 100644
--- a/x86_64-w64-mingw32/lib32/libd3drm.a
+++ b/x86_64-w64-mingw32/lib32/libd3drm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10.a b/x86_64-w64-mingw32/lib32/libd3dx10.a
index 2f1798f..d633e2e 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_33.a b/x86_64-w64-mingw32/lib32/libd3dx10_33.a
index 3eb7a44..af1ddd9 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_33.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_34.a b/x86_64-w64-mingw32/lib32/libd3dx10_34.a
index 6fab71b..9fcae0d 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_34.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_35.a b/x86_64-w64-mingw32/lib32/libd3dx10_35.a
index 20e1bca..e28d5ca 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_35.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_36.a b/x86_64-w64-mingw32/lib32/libd3dx10_36.a
index 376cec3..c3061aa 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_36.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_37.a b/x86_64-w64-mingw32/lib32/libd3dx10_37.a
index edb1493..a72fe34 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_37.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_38.a b/x86_64-w64-mingw32/lib32/libd3dx10_38.a
index f044163..95fc696 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_38.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_39.a b/x86_64-w64-mingw32/lib32/libd3dx10_39.a
index 6e6f28c..68a400a 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_39.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_40.a b/x86_64-w64-mingw32/lib32/libd3dx10_40.a
index 93691a2..3a802e7 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_40.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_41.a b/x86_64-w64-mingw32/lib32/libd3dx10_41.a
index 75e28ae..4873ecc 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_41.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_42.a b/x86_64-w64-mingw32/lib32/libd3dx10_42.a
index e6968aa..25d3c16 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_42.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx10_43.a b/x86_64-w64-mingw32/lib32/libd3dx10_43.a
index a839741..134d145 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx10_43.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx10_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx11.a b/x86_64-w64-mingw32/lib32/libd3dx11.a
index 98ac77a..7487420 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx11.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx11.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx11_42.a b/x86_64-w64-mingw32/lib32/libd3dx11_42.a
index b4636bf..d8a198c 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx11_42.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx11_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx11_43.a b/x86_64-w64-mingw32/lib32/libd3dx11_43.a
index fe3fc33..9381229 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx11_43.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx11_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx8d.a b/x86_64-w64-mingw32/lib32/libd3dx8d.a
index 0aa1327..22629f7 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx8d.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx8d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9.a b/x86_64-w64-mingw32/lib32/libd3dx9.a
index c0ae9b8..215dee5 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_24.a b/x86_64-w64-mingw32/lib32/libd3dx9_24.a
index d9fef66..0c43770 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_24.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_24.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_25.a b/x86_64-w64-mingw32/lib32/libd3dx9_25.a
index b634b9d..075da68 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_25.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_25.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_26.a b/x86_64-w64-mingw32/lib32/libd3dx9_26.a
index 949d598..9de3374 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_26.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_26.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_27.a b/x86_64-w64-mingw32/lib32/libd3dx9_27.a
index db2fe8a..3c2dc98 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_27.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_27.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_28.a b/x86_64-w64-mingw32/lib32/libd3dx9_28.a
index 3c88048..1be2b50 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_28.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_28.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_29.a b/x86_64-w64-mingw32/lib32/libd3dx9_29.a
index 95e6a5c..7b120dd 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_29.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_29.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_30.a b/x86_64-w64-mingw32/lib32/libd3dx9_30.a
index 8c7b5cf..50c9fe8 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_30.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_30.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_31.a b/x86_64-w64-mingw32/lib32/libd3dx9_31.a
index a33185e..e6e1b40 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_31.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_31.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_32.a b/x86_64-w64-mingw32/lib32/libd3dx9_32.a
index ad98510..68faab8 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_32.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_33.a b/x86_64-w64-mingw32/lib32/libd3dx9_33.a
index 2c75244..39074cd 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_33.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_33.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_34.a b/x86_64-w64-mingw32/lib32/libd3dx9_34.a
index 87fcd5c..ab4fef8 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_34.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_34.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_35.a b/x86_64-w64-mingw32/lib32/libd3dx9_35.a
index 197346c..29b34f0 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_35.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_35.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_36.a b/x86_64-w64-mingw32/lib32/libd3dx9_36.a
index b99d58a..bb3ef72 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_36.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_36.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_37.a b/x86_64-w64-mingw32/lib32/libd3dx9_37.a
index 4f3c03c..c3147cf 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_37.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_37.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_38.a b/x86_64-w64-mingw32/lib32/libd3dx9_38.a
index 8edb8da..fed14e3 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_38.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_38.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_39.a b/x86_64-w64-mingw32/lib32/libd3dx9_39.a
index 4f306b9..2c5b0c5 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_39.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_39.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_40.a b/x86_64-w64-mingw32/lib32/libd3dx9_40.a
index 0b78d90..2131879 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_40.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_40.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_41.a b/x86_64-w64-mingw32/lib32/libd3dx9_41.a
index ab32ab4..c34574d 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_41.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_41.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_42.a b/x86_64-w64-mingw32/lib32/libd3dx9_42.a
index 920af95..e8e1b03 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_42.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_42.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9_43.a b/x86_64-w64-mingw32/lib32/libd3dx9_43.a
index e361a43..34e4efc 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9_43.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9_43.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dx9d.a b/x86_64-w64-mingw32/lib32/libd3dx9d.a
index f51d4d6..548f1bb 100644
--- a/x86_64-w64-mingw32/lib32/libd3dx9d.a
+++ b/x86_64-w64-mingw32/lib32/libd3dx9d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libd3dxof.a b/x86_64-w64-mingw32/lib32/libd3dxof.a
index 1c7f41a..fa02e70 100644
--- a/x86_64-w64-mingw32/lib32/libd3dxof.a
+++ b/x86_64-w64-mingw32/lib32/libd3dxof.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdavclnt.a b/x86_64-w64-mingw32/lib32/libdavclnt.a
index 5ef69f3..e789fd4 100644
--- a/x86_64-w64-mingw32/lib32/libdavclnt.a
+++ b/x86_64-w64-mingw32/lib32/libdavclnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdavhlpr.a b/x86_64-w64-mingw32/lib32/libdavhlpr.a
index a697ec8..4d83e66 100644
--- a/x86_64-w64-mingw32/lib32/libdavhlpr.a
+++ b/x86_64-w64-mingw32/lib32/libdavhlpr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdbgeng.a b/x86_64-w64-mingw32/lib32/libdbgeng.a
index bc7baec..416edda 100644
--- a/x86_64-w64-mingw32/lib32/libdbgeng.a
+++ b/x86_64-w64-mingw32/lib32/libdbgeng.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdbghelp.a b/x86_64-w64-mingw32/lib32/libdbghelp.a
index d4b27b8..da216c3 100644
--- a/x86_64-w64-mingw32/lib32/libdbghelp.a
+++ b/x86_64-w64-mingw32/lib32/libdbghelp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libddraw.a b/x86_64-w64-mingw32/lib32/libddraw.a
index 36ee898..9fe61b3 100644
--- a/x86_64-w64-mingw32/lib32/libddraw.a
+++ b/x86_64-w64-mingw32/lib32/libddraw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdevmgr.a b/x86_64-w64-mingw32/lib32/libdevmgr.a
index 26847ce..fdd63e4 100644
--- a/x86_64-w64-mingw32/lib32/libdevmgr.a
+++ b/x86_64-w64-mingw32/lib32/libdevmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdevobj.a b/x86_64-w64-mingw32/lib32/libdevobj.a
index 253e491..c2cee30 100644
--- a/x86_64-w64-mingw32/lib32/libdevobj.a
+++ b/x86_64-w64-mingw32/lib32/libdevobj.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdevrtl.a b/x86_64-w64-mingw32/lib32/libdevrtl.a
index 5c7b1f8..6d2bb8c 100644
--- a/x86_64-w64-mingw32/lib32/libdevrtl.a
+++ b/x86_64-w64-mingw32/lib32/libdevrtl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdfscli.a b/x86_64-w64-mingw32/lib32/libdfscli.a
index 1389c38..c1297ba 100644
--- a/x86_64-w64-mingw32/lib32/libdfscli.a
+++ b/x86_64-w64-mingw32/lib32/libdfscli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdhcpcsvc.a b/x86_64-w64-mingw32/lib32/libdhcpcsvc.a
index 9df39ba..c535e09 100644
--- a/x86_64-w64-mingw32/lib32/libdhcpcsvc.a
+++ b/x86_64-w64-mingw32/lib32/libdhcpcsvc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdhcpcsvc6.a b/x86_64-w64-mingw32/lib32/libdhcpcsvc6.a
index 2a4f709..2d0967e 100644
--- a/x86_64-w64-mingw32/lib32/libdhcpcsvc6.a
+++ b/x86_64-w64-mingw32/lib32/libdhcpcsvc6.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdhcpsapi.a b/x86_64-w64-mingw32/lib32/libdhcpsapi.a
index 4190ca1..7b77905 100644
--- a/x86_64-w64-mingw32/lib32/libdhcpsapi.a
+++ b/x86_64-w64-mingw32/lib32/libdhcpsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdinput.a b/x86_64-w64-mingw32/lib32/libdinput.a
index 267beb3..da2c6c2 100644
--- a/x86_64-w64-mingw32/lib32/libdinput.a
+++ b/x86_64-w64-mingw32/lib32/libdinput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdinput8.a b/x86_64-w64-mingw32/lib32/libdinput8.a
index 632ed93..1e7b9fc 100644
--- a/x86_64-w64-mingw32/lib32/libdinput8.a
+++ b/x86_64-w64-mingw32/lib32/libdinput8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdlcapi.a b/x86_64-w64-mingw32/lib32/libdlcapi.a
index 2496f20..ca0f7d5 100644
--- a/x86_64-w64-mingw32/lib32/libdlcapi.a
+++ b/x86_64-w64-mingw32/lib32/libdlcapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdmoguids.a b/x86_64-w64-mingw32/lib32/libdmoguids.a
index 6f56538..5fde4bd 100644
--- a/x86_64-w64-mingw32/lib32/libdmoguids.a
+++ b/x86_64-w64-mingw32/lib32/libdmoguids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdnsapi.a b/x86_64-w64-mingw32/lib32/libdnsapi.a
index 75307ec..845d8dd 100644
--- a/x86_64-w64-mingw32/lib32/libdnsapi.a
+++ b/x86_64-w64-mingw32/lib32/libdnsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdplayx.a b/x86_64-w64-mingw32/lib32/libdplayx.a
index 0003182..39ab6d2 100644
--- a/x86_64-w64-mingw32/lib32/libdplayx.a
+++ b/x86_64-w64-mingw32/lib32/libdplayx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdpnaddr.a b/x86_64-w64-mingw32/lib32/libdpnaddr.a
index a3adfad..f20e11d 100644
--- a/x86_64-w64-mingw32/lib32/libdpnaddr.a
+++ b/x86_64-w64-mingw32/lib32/libdpnaddr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdpnet.a b/x86_64-w64-mingw32/lib32/libdpnet.a
index de65328..9c2d0d8 100644
--- a/x86_64-w64-mingw32/lib32/libdpnet.a
+++ b/x86_64-w64-mingw32/lib32/libdpnet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdpnlobby.a b/x86_64-w64-mingw32/lib32/libdpnlobby.a
index 0383421..e3f3dc3 100644
--- a/x86_64-w64-mingw32/lib32/libdpnlobby.a
+++ b/x86_64-w64-mingw32/lib32/libdpnlobby.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdpvoice.a b/x86_64-w64-mingw32/lib32/libdpvoice.a
index 10fc35c..2815271 100644
--- a/x86_64-w64-mingw32/lib32/libdpvoice.a
+++ b/x86_64-w64-mingw32/lib32/libdpvoice.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdsetup.a b/x86_64-w64-mingw32/lib32/libdsetup.a
index 505e4fd..1d0cac6 100644
--- a/x86_64-w64-mingw32/lib32/libdsetup.a
+++ b/x86_64-w64-mingw32/lib32/libdsetup.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdsound.a b/x86_64-w64-mingw32/lib32/libdsound.a
index f94ce6c..d3820b7 100644
--- a/x86_64-w64-mingw32/lib32/libdsound.a
+++ b/x86_64-w64-mingw32/lib32/libdsound.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdsrole.a b/x86_64-w64-mingw32/lib32/libdsrole.a
index 15ac04f..a483823 100644
--- a/x86_64-w64-mingw32/lib32/libdsrole.a
+++ b/x86_64-w64-mingw32/lib32/libdsrole.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdssec.a b/x86_64-w64-mingw32/lib32/libdssec.a
index b7c8988..2e5b0c8 100644
--- a/x86_64-w64-mingw32/lib32/libdssec.a
+++ b/x86_64-w64-mingw32/lib32/libdssec.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdwmapi.a b/x86_64-w64-mingw32/lib32/libdwmapi.a
index 6486837..24b1884 100644
--- a/x86_64-w64-mingw32/lib32/libdwmapi.a
+++ b/x86_64-w64-mingw32/lib32/libdwmapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdwrite.a b/x86_64-w64-mingw32/lib32/libdwrite.a
index 9afcff3..088db2a 100644
--- a/x86_64-w64-mingw32/lib32/libdwrite.a
+++ b/x86_64-w64-mingw32/lib32/libdwrite.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxapi.a b/x86_64-w64-mingw32/lib32/libdxapi.a
index d3ad1f5..45d8d1a 100644
--- a/x86_64-w64-mingw32/lib32/libdxapi.a
+++ b/x86_64-w64-mingw32/lib32/libdxapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxerr8.a b/x86_64-w64-mingw32/lib32/libdxerr8.a
index 8e7ceed..564a233 100644
--- a/x86_64-w64-mingw32/lib32/libdxerr8.a
+++ b/x86_64-w64-mingw32/lib32/libdxerr8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxerr9.a b/x86_64-w64-mingw32/lib32/libdxerr9.a
index b007fc7..8731d3c 100644
--- a/x86_64-w64-mingw32/lib32/libdxerr9.a
+++ b/x86_64-w64-mingw32/lib32/libdxerr9.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxgi.a b/x86_64-w64-mingw32/lib32/libdxgi.a
index 645bab6..f008a3c 100644
--- a/x86_64-w64-mingw32/lib32/libdxgi.a
+++ b/x86_64-w64-mingw32/lib32/libdxgi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxguid.a b/x86_64-w64-mingw32/lib32/libdxguid.a
index 49fe462..fd8a292 100644
--- a/x86_64-w64-mingw32/lib32/libdxguid.a
+++ b/x86_64-w64-mingw32/lib32/libdxguid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libdxva2.a b/x86_64-w64-mingw32/lib32/libdxva2.a
index c72eaa4..cd29fed 100644
--- a/x86_64-w64-mingw32/lib32/libdxva2.a
+++ b/x86_64-w64-mingw32/lib32/libdxva2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libeapp3hst.a b/x86_64-w64-mingw32/lib32/libeapp3hst.a
index 4581c66..3108d93 100644
--- a/x86_64-w64-mingw32/lib32/libeapp3hst.a
+++ b/x86_64-w64-mingw32/lib32/libeapp3hst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libeappcfg.a b/x86_64-w64-mingw32/lib32/libeappcfg.a
index 227655b..a7df0b4 100644
--- a/x86_64-w64-mingw32/lib32/libeappcfg.a
+++ b/x86_64-w64-mingw32/lib32/libeappcfg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libeappgnui.a b/x86_64-w64-mingw32/lib32/libeappgnui.a
index da4eb38..69d6cbc 100644
--- a/x86_64-w64-mingw32/lib32/libeappgnui.a
+++ b/x86_64-w64-mingw32/lib32/libeappgnui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libeapphost.a b/x86_64-w64-mingw32/lib32/libeapphost.a
index 547569b..64d4dff 100644
--- a/x86_64-w64-mingw32/lib32/libeapphost.a
+++ b/x86_64-w64-mingw32/lib32/libeapphost.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libeappprxy.a b/x86_64-w64-mingw32/lib32/libeappprxy.a
index 1b6e5c1..89a1429 100644
--- a/x86_64-w64-mingw32/lib32/libeappprxy.a
+++ b/x86_64-w64-mingw32/lib32/libeappprxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libelscore.a b/x86_64-w64-mingw32/lib32/libelscore.a
index 6cff18c..f932299 100644
--- a/x86_64-w64-mingw32/lib32/libelscore.a
+++ b/x86_64-w64-mingw32/lib32/libelscore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libesent.a b/x86_64-w64-mingw32/lib32/libesent.a
index 052b5fd..9152d1b 100644
--- a/x86_64-w64-mingw32/lib32/libesent.a
+++ b/x86_64-w64-mingw32/lib32/libesent.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libevr.a b/x86_64-w64-mingw32/lib32/libevr.a
index 15d214b..24e959e 100644
--- a/x86_64-w64-mingw32/lib32/libevr.a
+++ b/x86_64-w64-mingw32/lib32/libevr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libfaultrep.a b/x86_64-w64-mingw32/lib32/libfaultrep.a
index e54ac20..b91459e 100644
--- a/x86_64-w64-mingw32/lib32/libfaultrep.a
+++ b/x86_64-w64-mingw32/lib32/libfaultrep.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libfwpuclnt.a b/x86_64-w64-mingw32/lib32/libfwpuclnt.a
index a57b1eb..2014af1 100644
--- a/x86_64-w64-mingw32/lib32/libfwpuclnt.a
+++ b/x86_64-w64-mingw32/lib32/libfwpuclnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgdi32.a b/x86_64-w64-mingw32/lib32/libgdi32.a
index e028a23..42a3231 100644
--- a/x86_64-w64-mingw32/lib32/libgdi32.a
+++ b/x86_64-w64-mingw32/lib32/libgdi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgdiplus.a b/x86_64-w64-mingw32/lib32/libgdiplus.a
index 7d240bb..d953da7 100644
--- a/x86_64-w64-mingw32/lib32/libgdiplus.a
+++ b/x86_64-w64-mingw32/lib32/libgdiplus.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libglaux.a b/x86_64-w64-mingw32/lib32/libglaux.a
index 4befc93..3ba1271 100644
--- a/x86_64-w64-mingw32/lib32/libglaux.a
+++ b/x86_64-w64-mingw32/lib32/libglaux.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libglu32.a b/x86_64-w64-mingw32/lib32/libglu32.a
index c9a67a3..257475f 100644
--- a/x86_64-w64-mingw32/lib32/libglu32.a
+++ b/x86_64-w64-mingw32/lib32/libglu32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libglut.a b/x86_64-w64-mingw32/lib32/libglut.a
index 1e80acd..08f0f41 100644
--- a/x86_64-w64-mingw32/lib32/libglut.a
+++ b/x86_64-w64-mingw32/lib32/libglut.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libglut32.a b/x86_64-w64-mingw32/lib32/libglut32.a
index cbc3998..a80fca0 100644
--- a/x86_64-w64-mingw32/lib32/libglut32.a
+++ b/x86_64-w64-mingw32/lib32/libglut32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgmon.a b/x86_64-w64-mingw32/lib32/libgmon.a
index 9acc1d6..97934e5 100644
--- a/x86_64-w64-mingw32/lib32/libgmon.a
+++ b/x86_64-w64-mingw32/lib32/libgmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgpapi.a b/x86_64-w64-mingw32/lib32/libgpapi.a
index eb62b88..41ce599 100644
--- a/x86_64-w64-mingw32/lib32/libgpapi.a
+++ b/x86_64-w64-mingw32/lib32/libgpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgpedit.a b/x86_64-w64-mingw32/lib32/libgpedit.a
index a8ea924..0092252 100644
--- a/x86_64-w64-mingw32/lib32/libgpedit.a
+++ b/x86_64-w64-mingw32/lib32/libgpedit.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgpprefcl.a b/x86_64-w64-mingw32/lib32/libgpprefcl.a
index 0185b98..73dd6ed 100644
--- a/x86_64-w64-mingw32/lib32/libgpprefcl.a
+++ b/x86_64-w64-mingw32/lib32/libgpprefcl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgpscript.a b/x86_64-w64-mingw32/lib32/libgpscript.a
index 66beaf1..96c0fcb 100644
--- a/x86_64-w64-mingw32/lib32/libgpscript.a
+++ b/x86_64-w64-mingw32/lib32/libgpscript.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libgptext.a b/x86_64-w64-mingw32/lib32/libgptext.a
index fb4eabe..b3ecb54 100644
--- a/x86_64-w64-mingw32/lib32/libgptext.a
+++ b/x86_64-w64-mingw32/lib32/libgptext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libhal.a b/x86_64-w64-mingw32/lib32/libhal.a
index 3e9afea..9533189 100644
--- a/x86_64-w64-mingw32/lib32/libhal.a
+++ b/x86_64-w64-mingw32/lib32/libhal.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libhid.a b/x86_64-w64-mingw32/lib32/libhid.a
index f94024e..e5ff963 100644
--- a/x86_64-w64-mingw32/lib32/libhid.a
+++ b/x86_64-w64-mingw32/lib32/libhid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libhidclass.a b/x86_64-w64-mingw32/lib32/libhidclass.a
index 2258b18..381c122 100644
--- a/x86_64-w64-mingw32/lib32/libhidclass.a
+++ b/x86_64-w64-mingw32/lib32/libhidclass.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libhidparse.a b/x86_64-w64-mingw32/lib32/libhidparse.a
index 96d2e57..bb3ad7a 100644
--- a/x86_64-w64-mingw32/lib32/libhidparse.a
+++ b/x86_64-w64-mingw32/lib32/libhidparse.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libhttpapi.a b/x86_64-w64-mingw32/lib32/libhttpapi.a
index 23ec7d9..902048d 100644
--- a/x86_64-w64-mingw32/lib32/libhttpapi.a
+++ b/x86_64-w64-mingw32/lib32/libhttpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libicmui.a b/x86_64-w64-mingw32/lib32/libicmui.a
index 0c729ec..13aa810 100644
--- a/x86_64-w64-mingw32/lib32/libicmui.a
+++ b/x86_64-w64-mingw32/lib32/libicmui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libigmpagnt.a b/x86_64-w64-mingw32/lib32/libigmpagnt.a
index a5a81df..9f37a21 100644
--- a/x86_64-w64-mingw32/lib32/libigmpagnt.a
+++ b/x86_64-w64-mingw32/lib32/libigmpagnt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libimagehlp.a b/x86_64-w64-mingw32/lib32/libimagehlp.a
index a233039..87d8043 100644
--- a/x86_64-w64-mingw32/lib32/libimagehlp.a
+++ b/x86_64-w64-mingw32/lib32/libimagehlp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libimm32.a b/x86_64-w64-mingw32/lib32/libimm32.a
index 92b399b..d55c8aa 100644
--- a/x86_64-w64-mingw32/lib32/libimm32.a
+++ b/x86_64-w64-mingw32/lib32/libimm32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libiphlpapi.a b/x86_64-w64-mingw32/lib32/libiphlpapi.a
index 30234ea..0c30e26 100644
--- a/x86_64-w64-mingw32/lib32/libiphlpapi.a
+++ b/x86_64-w64-mingw32/lib32/libiphlpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libiscsidsc.a b/x86_64-w64-mingw32/lib32/libiscsidsc.a
index 4d67f22..05c3844 100644
--- a/x86_64-w64-mingw32/lib32/libiscsidsc.a
+++ b/x86_64-w64-mingw32/lib32/libiscsidsc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libkernel32.a b/x86_64-w64-mingw32/lib32/libkernel32.a
index 69486f7..6a0e438 100644
--- a/x86_64-w64-mingw32/lib32/libkernel32.a
+++ b/x86_64-w64-mingw32/lib32/libkernel32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libks.a b/x86_64-w64-mingw32/lib32/libks.a
index 5440b8f..cbaf484 100644
--- a/x86_64-w64-mingw32/lib32/libks.a
+++ b/x86_64-w64-mingw32/lib32/libks.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libksguid.a b/x86_64-w64-mingw32/lib32/libksguid.a
index 30414da..3bc09ac 100644
--- a/x86_64-w64-mingw32/lib32/libksguid.a
+++ b/x86_64-w64-mingw32/lib32/libksguid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libksproxy.a b/x86_64-w64-mingw32/lib32/libksproxy.a
index ad53c64..c628e85 100644
--- a/x86_64-w64-mingw32/lib32/libksproxy.a
+++ b/x86_64-w64-mingw32/lib32/libksproxy.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libksuser.a b/x86_64-w64-mingw32/lib32/libksuser.a
index 59b1d1b..4fa2abf 100644
--- a/x86_64-w64-mingw32/lib32/libksuser.a
+++ b/x86_64-w64-mingw32/lib32/libksuser.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libktmw32.a b/x86_64-w64-mingw32/lib32/libktmw32.a
index 6c5de01..c8513ad 100644
--- a/x86_64-w64-mingw32/lib32/libktmw32.a
+++ b/x86_64-w64-mingw32/lib32/libktmw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liblargeint.a b/x86_64-w64-mingw32/lib32/liblargeint.a
index 4a907f0..55da547 100644
--- a/x86_64-w64-mingw32/lib32/liblargeint.a
+++ b/x86_64-w64-mingw32/lib32/liblargeint.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liblocationapi.a b/x86_64-w64-mingw32/lib32/liblocationapi.a
new file mode 100644
index 0000000..7d9b84b
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/liblocationapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liblogoncli.a b/x86_64-w64-mingw32/lib32/liblogoncli.a
index f57e160..4e81fbb 100644
--- a/x86_64-w64-mingw32/lib32/liblogoncli.a
+++ b/x86_64-w64-mingw32/lib32/liblogoncli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liblz32.a b/x86_64-w64-mingw32/lib32/liblz32.a
index 50da528..3b7cd17 100644
--- a/x86_64-w64-mingw32/lib32/liblz32.a
+++ b/x86_64-w64-mingw32/lib32/liblz32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libm.a b/x86_64-w64-mingw32/lib32/libm.a
index 2ed18b5..417b845 100644
--- a/x86_64-w64-mingw32/lib32/libm.a
+++ b/x86_64-w64-mingw32/lib32/libm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmapi32.a b/x86_64-w64-mingw32/lib32/libmapi32.a
index cf7b25e..0b71e7d 100644
--- a/x86_64-w64-mingw32/lib32/libmapi32.a
+++ b/x86_64-w64-mingw32/lib32/libmapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmcd.a b/x86_64-w64-mingw32/lib32/libmcd.a
index f2736d6..de2c2c8 100644
--- a/x86_64-w64-mingw32/lib32/libmcd.a
+++ b/x86_64-w64-mingw32/lib32/libmcd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmf.a b/x86_64-w64-mingw32/lib32/libmf.a
index 76ee22b..1db68e6 100644
--- a/x86_64-w64-mingw32/lib32/libmf.a
+++ b/x86_64-w64-mingw32/lib32/libmf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmfcuia32.a b/x86_64-w64-mingw32/lib32/libmfcuia32.a
index 5ebedc9..d564df4 100644
--- a/x86_64-w64-mingw32/lib32/libmfcuia32.a
+++ b/x86_64-w64-mingw32/lib32/libmfcuia32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmfplat.a b/x86_64-w64-mingw32/lib32/libmfplat.a
index d200520..7fee819 100644
--- a/x86_64-w64-mingw32/lib32/libmfplat.a
+++ b/x86_64-w64-mingw32/lib32/libmfplat.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmfuuid.a b/x86_64-w64-mingw32/lib32/libmfuuid.a
index 4508e35..0640416 100644
--- a/x86_64-w64-mingw32/lib32/libmfuuid.a
+++ b/x86_64-w64-mingw32/lib32/libmfuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmgmtapi.a b/x86_64-w64-mingw32/lib32/libmgmtapi.a
index 6e6120d..af9b302 100644
--- a/x86_64-w64-mingw32/lib32/libmgmtapi.a
+++ b/x86_64-w64-mingw32/lib32/libmgmtapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmingw32.a b/x86_64-w64-mingw32/lib32/libmingw32.a
index 533edc5..3c6acf1 100644
--- a/x86_64-w64-mingw32/lib32/libmingw32.a
+++ b/x86_64-w64-mingw32/lib32/libmingw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmingwex.a b/x86_64-w64-mingw32/lib32/libmingwex.a
index f466b0b..e01ae4e 100644
--- a/x86_64-w64-mingw32/lib32/libmingwex.a
+++ b/x86_64-w64-mingw32/lib32/libmingwex.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmingwthrd.a b/x86_64-w64-mingw32/lib32/libmingwthrd.a
index f1b9461..eacee19 100644
--- a/x86_64-w64-mingw32/lib32/libmingwthrd.a
+++ b/x86_64-w64-mingw32/lib32/libmingwthrd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmoldname.a b/x86_64-w64-mingw32/lib32/libmoldname.a
index 085c0c2..4739928 100644
--- a/x86_64-w64-mingw32/lib32/libmoldname.a
+++ b/x86_64-w64-mingw32/lib32/libmoldname.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmpr.a b/x86_64-w64-mingw32/lib32/libmpr.a
index 774ccd4..756c8dd 100644
--- a/x86_64-w64-mingw32/lib32/libmpr.a
+++ b/x86_64-w64-mingw32/lib32/libmpr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmprapi.a b/x86_64-w64-mingw32/lib32/libmprapi.a
index 4fe4525..ca6069b 100644
--- a/x86_64-w64-mingw32/lib32/libmprapi.a
+++ b/x86_64-w64-mingw32/lib32/libmprapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmqrt.a b/x86_64-w64-mingw32/lib32/libmqrt.a
index f1fbd3b..6147835 100644
--- a/x86_64-w64-mingw32/lib32/libmqrt.a
+++ b/x86_64-w64-mingw32/lib32/libmqrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsacm32.a b/x86_64-w64-mingw32/lib32/libmsacm32.a
index 4043e8a..6acef77 100644
--- a/x86_64-w64-mingw32/lib32/libmsacm32.a
+++ b/x86_64-w64-mingw32/lib32/libmsacm32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmscms.a b/x86_64-w64-mingw32/lib32/libmscms.a
index c20adba..2f24b12 100644
--- a/x86_64-w64-mingw32/lib32/libmscms.a
+++ b/x86_64-w64-mingw32/lib32/libmscms.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsctf.a b/x86_64-w64-mingw32/lib32/libmsctf.a
index 569a0d3..6b84ca4 100644
--- a/x86_64-w64-mingw32/lib32/libmsctf.a
+++ b/x86_64-w64-mingw32/lib32/libmsctf.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsctfmonitor.a b/x86_64-w64-mingw32/lib32/libmsctfmonitor.a
index 067d7b4..0a7c585 100644
--- a/x86_64-w64-mingw32/lib32/libmsctfmonitor.a
+++ b/x86_64-w64-mingw32/lib32/libmsctfmonitor.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsdmo.a b/x86_64-w64-mingw32/lib32/libmsdmo.a
index 6722ace..3b0803e 100644
--- a/x86_64-w64-mingw32/lib32/libmsdmo.a
+++ b/x86_64-w64-mingw32/lib32/libmsdmo.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsdrm.a b/x86_64-w64-mingw32/lib32/libmsdrm.a
index e7bb902..03165f2 100644
--- a/x86_64-w64-mingw32/lib32/libmsdrm.a
+++ b/x86_64-w64-mingw32/lib32/libmsdrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmshtml.a b/x86_64-w64-mingw32/lib32/libmshtml.a
index 32dad6d..d35e4d9 100644
--- a/x86_64-w64-mingw32/lib32/libmshtml.a
+++ b/x86_64-w64-mingw32/lib32/libmshtml.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmshtmled.a b/x86_64-w64-mingw32/lib32/libmshtmled.a
index 0369ae8..3f1860d 100644
--- a/x86_64-w64-mingw32/lib32/libmshtmled.a
+++ b/x86_64-w64-mingw32/lib32/libmshtmled.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsi.a b/x86_64-w64-mingw32/lib32/libmsi.a
index 5fd51f9..bb1e80d 100644
--- a/x86_64-w64-mingw32/lib32/libmsi.a
+++ b/x86_64-w64-mingw32/lib32/libmsi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsimg32.a b/x86_64-w64-mingw32/lib32/libmsimg32.a
index 55f8879..99e5c4c 100644
--- a/x86_64-w64-mingw32/lib32/libmsimg32.a
+++ b/x86_64-w64-mingw32/lib32/libmsimg32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmstask.a b/x86_64-w64-mingw32/lib32/libmstask.a
index 94a4d74..6571977 100644
--- a/x86_64-w64-mingw32/lib32/libmstask.a
+++ b/x86_64-w64-mingw32/lib32/libmstask.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcp60.a b/x86_64-w64-mingw32/lib32/libmsvcp60.a
index 44ef62b..ee736af 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcp60.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcp60.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr100.a b/x86_64-w64-mingw32/lib32/libmsvcr100.a
index 37348ec..23b6cc7 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcr100.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcr100.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr110.a b/x86_64-w64-mingw32/lib32/libmsvcr110.a
index ecd0173..dedc7a2 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcr110.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcr110.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr120.a b/x86_64-w64-mingw32/lib32/libmsvcr120.a
new file mode 100644
index 0000000..eec6e28
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/libmsvcr120.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr120d.a b/x86_64-w64-mingw32/lib32/libmsvcr120d.a
new file mode 100644
index 0000000..dfffb09
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/libmsvcr120d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr80.a b/x86_64-w64-mingw32/lib32/libmsvcr80.a
index e0ce033..64e8559 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcr80.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcr80.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr90.a b/x86_64-w64-mingw32/lib32/libmsvcr90.a
index 7abb678..cd7e602 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcr90.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcr90.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcr90d.a b/x86_64-w64-mingw32/lib32/libmsvcr90d.a
index 1cd8393..639684f 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcr90d.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcr90d.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvcrt.a b/x86_64-w64-mingw32/lib32/libmsvcrt.a
index 6a8a2de..b0f94ca 100644
--- a/x86_64-w64-mingw32/lib32/libmsvcrt.a
+++ b/x86_64-w64-mingw32/lib32/libmsvcrt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmsvfw32.a b/x86_64-w64-mingw32/lib32/libmsvfw32.a
index 1aa48f4..222fdd4 100644
--- a/x86_64-w64-mingw32/lib32/libmsvfw32.a
+++ b/x86_64-w64-mingw32/lib32/libmsvfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libmswsock.a b/x86_64-w64-mingw32/lib32/libmswsock.a
index b06bdf7..9670d7e 100644
--- a/x86_64-w64-mingw32/lib32/libmswsock.a
+++ b/x86_64-w64-mingw32/lib32/libmswsock.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libncrypt.a b/x86_64-w64-mingw32/lib32/libncrypt.a
index c0bdfb9..1bd2fcc 100644
--- a/x86_64-w64-mingw32/lib32/libncrypt.a
+++ b/x86_64-w64-mingw32/lib32/libncrypt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnddeapi.a b/x86_64-w64-mingw32/lib32/libnddeapi.a
index 80cce79..fd1279c 100644
--- a/x86_64-w64-mingw32/lib32/libnddeapi.a
+++ b/x86_64-w64-mingw32/lib32/libnddeapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libndfapi.a b/x86_64-w64-mingw32/lib32/libndfapi.a
index ed06c35..b540268 100644
--- a/x86_64-w64-mingw32/lib32/libndfapi.a
+++ b/x86_64-w64-mingw32/lib32/libndfapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libndis.a b/x86_64-w64-mingw32/lib32/libndis.a
index 23787a9..1dd5c97 100644
--- a/x86_64-w64-mingw32/lib32/libndis.a
+++ b/x86_64-w64-mingw32/lib32/libndis.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnetapi32.a b/x86_64-w64-mingw32/lib32/libnetapi32.a
index 82eb992..e14e77b 100644
--- a/x86_64-w64-mingw32/lib32/libnetapi32.a
+++ b/x86_64-w64-mingw32/lib32/libnetapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnetjoin.a b/x86_64-w64-mingw32/lib32/libnetjoin.a
index 432c711..92e151b 100644
--- a/x86_64-w64-mingw32/lib32/libnetjoin.a
+++ b/x86_64-w64-mingw32/lib32/libnetjoin.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnetutils.a b/x86_64-w64-mingw32/lib32/libnetutils.a
index f37d2da..caf477f 100644
--- a/x86_64-w64-mingw32/lib32/libnetutils.a
+++ b/x86_64-w64-mingw32/lib32/libnetutils.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnewdev.a b/x86_64-w64-mingw32/lib32/libnewdev.a
index f7db4c8..3ee0147 100644
--- a/x86_64-w64-mingw32/lib32/libnewdev.a
+++ b/x86_64-w64-mingw32/lib32/libnewdev.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libnormaliz.a b/x86_64-w64-mingw32/lib32/libnormaliz.a
index b35a577..b9dfe05 100644
--- a/x86_64-w64-mingw32/lib32/libnormaliz.a
+++ b/x86_64-w64-mingw32/lib32/libnormaliz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libntdll.a b/x86_64-w64-mingw32/lib32/libntdll.a
index dd7183f..2034a92 100644
--- a/x86_64-w64-mingw32/lib32/libntdll.a
+++ b/x86_64-w64-mingw32/lib32/libntdll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libntdsapi.a b/x86_64-w64-mingw32/lib32/libntdsapi.a
index 3c6330e..d78c035 100644
--- a/x86_64-w64-mingw32/lib32/libntdsapi.a
+++ b/x86_64-w64-mingw32/lib32/libntdsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libntmsapi.a b/x86_64-w64-mingw32/lib32/libntmsapi.a
index 2282075..713b608 100644
--- a/x86_64-w64-mingw32/lib32/libntmsapi.a
+++ b/x86_64-w64-mingw32/lib32/libntmsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libntoskrnl.a b/x86_64-w64-mingw32/lib32/libntoskrnl.a
index 503b63b..7baf2fb 100644
--- a/x86_64-w64-mingw32/lib32/libntoskrnl.a
+++ b/x86_64-w64-mingw32/lib32/libntoskrnl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libodbc32.a b/x86_64-w64-mingw32/lib32/libodbc32.a
index 2efeaa4..0384dc9 100644
--- a/x86_64-w64-mingw32/lib32/libodbc32.a
+++ b/x86_64-w64-mingw32/lib32/libodbc32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libodbccp32.a b/x86_64-w64-mingw32/lib32/libodbccp32.a
index 04ef39a..bf3d55d 100644
--- a/x86_64-w64-mingw32/lib32/libodbccp32.a
+++ b/x86_64-w64-mingw32/lib32/libodbccp32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libole32.a b/x86_64-w64-mingw32/lib32/libole32.a
index e63df23..5f3a52e 100644
--- a/x86_64-w64-mingw32/lib32/libole32.a
+++ b/x86_64-w64-mingw32/lib32/libole32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liboleacc.a b/x86_64-w64-mingw32/lib32/liboleacc.a
index 0e54783..6623ac4 100644
--- a/x86_64-w64-mingw32/lib32/liboleacc.a
+++ b/x86_64-w64-mingw32/lib32/liboleacc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liboleaut32.a b/x86_64-w64-mingw32/lib32/liboleaut32.a
index d0eec34..e5adb71 100644
--- a/x86_64-w64-mingw32/lib32/liboleaut32.a
+++ b/x86_64-w64-mingw32/lib32/liboleaut32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libolecli32.a b/x86_64-w64-mingw32/lib32/libolecli32.a
index bf2b01f..b79bc80 100644
--- a/x86_64-w64-mingw32/lib32/libolecli32.a
+++ b/x86_64-w64-mingw32/lib32/libolecli32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liboledlg.a b/x86_64-w64-mingw32/lib32/liboledlg.a
index b1fe7b3..9a93ff1 100644
--- a/x86_64-w64-mingw32/lib32/liboledlg.a
+++ b/x86_64-w64-mingw32/lib32/liboledlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libolepro32.a b/x86_64-w64-mingw32/lib32/libolepro32.a
index 0ce0c90..4b4a530 100644
--- a/x86_64-w64-mingw32/lib32/libolepro32.a
+++ b/x86_64-w64-mingw32/lib32/libolepro32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libolesvr32.a b/x86_64-w64-mingw32/lib32/libolesvr32.a
index c6242d2..4e2247b 100644
--- a/x86_64-w64-mingw32/lib32/libolesvr32.a
+++ b/x86_64-w64-mingw32/lib32/libolesvr32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libolethk32.a b/x86_64-w64-mingw32/lib32/libolethk32.a
index ddfb707..e14fdeb 100644
--- a/x86_64-w64-mingw32/lib32/libolethk32.a
+++ b/x86_64-w64-mingw32/lib32/libolethk32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libopengl32.a b/x86_64-w64-mingw32/lib32/libopengl32.a
index 840c9b0..34f9719 100644
--- a/x86_64-w64-mingw32/lib32/libopengl32.a
+++ b/x86_64-w64-mingw32/lib32/libopengl32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libp2p.a b/x86_64-w64-mingw32/lib32/libp2p.a
index c6c034d..eaeb03b 100644
--- a/x86_64-w64-mingw32/lib32/libp2p.a
+++ b/x86_64-w64-mingw32/lib32/libp2p.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libp2pcollab.a b/x86_64-w64-mingw32/lib32/libp2pcollab.a
index 168f0cf..8ee7a04 100644
--- a/x86_64-w64-mingw32/lib32/libp2pcollab.a
+++ b/x86_64-w64-mingw32/lib32/libp2pcollab.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libp2pgraph.a b/x86_64-w64-mingw32/lib32/libp2pgraph.a
index bfbccfb..349d2d0 100644
--- a/x86_64-w64-mingw32/lib32/libp2pgraph.a
+++ b/x86_64-w64-mingw32/lib32/libp2pgraph.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpcwum.a b/x86_64-w64-mingw32/lib32/libpcwum.a
index ea5d36d..f83738d 100644
--- a/x86_64-w64-mingw32/lib32/libpcwum.a
+++ b/x86_64-w64-mingw32/lib32/libpcwum.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpdh.a b/x86_64-w64-mingw32/lib32/libpdh.a
index 3853534..1d0d693 100644
--- a/x86_64-w64-mingw32/lib32/libpdh.a
+++ b/x86_64-w64-mingw32/lib32/libpdh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpdhui.a b/x86_64-w64-mingw32/lib32/libpdhui.a
index 153056a..87d3e6a 100644
--- a/x86_64-w64-mingw32/lib32/libpdhui.a
+++ b/x86_64-w64-mingw32/lib32/libpdhui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpenwin32.a b/x86_64-w64-mingw32/lib32/libpenwin32.a
index 5a1dc61..4b8727f 100644
--- a/x86_64-w64-mingw32/lib32/libpenwin32.a
+++ b/x86_64-w64-mingw32/lib32/libpenwin32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpkpd32.a b/x86_64-w64-mingw32/lib32/libpkpd32.a
index e1f0020..fca563f 100644
--- a/x86_64-w64-mingw32/lib32/libpkpd32.a
+++ b/x86_64-w64-mingw32/lib32/libpkpd32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libportabledeviceguids.a b/x86_64-w64-mingw32/lib32/libportabledeviceguids.a
index da33c72..247b79f 100644
--- a/x86_64-w64-mingw32/lib32/libportabledeviceguids.a
+++ b/x86_64-w64-mingw32/lib32/libportabledeviceguids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpowrprof.a b/x86_64-w64-mingw32/lib32/libpowrprof.a
index 1919f79..5d28d25 100644
--- a/x86_64-w64-mingw32/lib32/libpowrprof.a
+++ b/x86_64-w64-mingw32/lib32/libpowrprof.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpsapi.a b/x86_64-w64-mingw32/lib32/libpsapi.a
index 3ad6183..068a1a6 100644
--- a/x86_64-w64-mingw32/lib32/libpsapi.a
+++ b/x86_64-w64-mingw32/lib32/libpsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpthread.a b/x86_64-w64-mingw32/lib32/libpthread.a
index 94093e6..593ba58 100644
--- a/x86_64-w64-mingw32/lib32/libpthread.a
+++ b/x86_64-w64-mingw32/lib32/libpthread.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libpthread.dll.a b/x86_64-w64-mingw32/lib32/libpthread.dll.a
index 127c2f9..082d8db 100644
--- a/x86_64-w64-mingw32/lib32/libpthread.dll.a
+++ b/x86_64-w64-mingw32/lib32/libpthread.dll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libquadmath.a b/x86_64-w64-mingw32/lib32/libquadmath.a
index 76527c2..2a30855 100644
--- a/x86_64-w64-mingw32/lib32/libquadmath.a
+++ b/x86_64-w64-mingw32/lib32/libquadmath.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libquartz.a b/x86_64-w64-mingw32/lib32/libquartz.a
index 7454518..667017c 100644
--- a/x86_64-w64-mingw32/lib32/libquartz.a
+++ b/x86_64-w64-mingw32/lib32/libquartz.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libqutil.a b/x86_64-w64-mingw32/lib32/libqutil.a
index b8cc7f1..c20d4ba 100644
--- a/x86_64-w64-mingw32/lib32/libqutil.a
+++ b/x86_64-w64-mingw32/lib32/libqutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libqwave.a b/x86_64-w64-mingw32/lib32/libqwave.a
index cfe7d49..7079fb4 100644
--- a/x86_64-w64-mingw32/lib32/libqwave.a
+++ b/x86_64-w64-mingw32/lib32/libqwave.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librapi.a b/x86_64-w64-mingw32/lib32/librapi.a
index e562d2f..2f315ab 100644
--- a/x86_64-w64-mingw32/lib32/librapi.a
+++ b/x86_64-w64-mingw32/lib32/librapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librasapi32.a b/x86_64-w64-mingw32/lib32/librasapi32.a
index b82eafc..d8f5752 100644
--- a/x86_64-w64-mingw32/lib32/librasapi32.a
+++ b/x86_64-w64-mingw32/lib32/librasapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librasdlg.a b/x86_64-w64-mingw32/lib32/librasdlg.a
index b6fd05a..96b6150 100644
--- a/x86_64-w64-mingw32/lib32/librasdlg.a
+++ b/x86_64-w64-mingw32/lib32/librasdlg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libresutil.a b/x86_64-w64-mingw32/lib32/libresutil.a
index dc5602b..fdc6ce3 100644
--- a/x86_64-w64-mingw32/lib32/libresutil.a
+++ b/x86_64-w64-mingw32/lib32/libresutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librpcdce4.a b/x86_64-w64-mingw32/lib32/librpcdce4.a
index 7d63ac5..bee4248 100644
--- a/x86_64-w64-mingw32/lib32/librpcdce4.a
+++ b/x86_64-w64-mingw32/lib32/librpcdce4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librpcdiag.a b/x86_64-w64-mingw32/lib32/librpcdiag.a
index 123c9c4..bbfd425 100644
--- a/x86_64-w64-mingw32/lib32/librpcdiag.a
+++ b/x86_64-w64-mingw32/lib32/librpcdiag.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librpchttp.a b/x86_64-w64-mingw32/lib32/librpchttp.a
index 7acfc90..4ba7b5f 100644
--- a/x86_64-w64-mingw32/lib32/librpchttp.a
+++ b/x86_64-w64-mingw32/lib32/librpchttp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librpcns4.a b/x86_64-w64-mingw32/lib32/librpcns4.a
index 7b7777d..190597e 100644
--- a/x86_64-w64-mingw32/lib32/librpcns4.a
+++ b/x86_64-w64-mingw32/lib32/librpcns4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librpcrt4.a b/x86_64-w64-mingw32/lib32/librpcrt4.a
index 9ac5d27..3110089 100644
--- a/x86_64-w64-mingw32/lib32/librpcrt4.a
+++ b/x86_64-w64-mingw32/lib32/librpcrt4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librstrmgr.a b/x86_64-w64-mingw32/lib32/librstrmgr.a
index 918cc69..296c630 100644
--- a/x86_64-w64-mingw32/lib32/librstrmgr.a
+++ b/x86_64-w64-mingw32/lib32/librstrmgr.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librtm.a b/x86_64-w64-mingw32/lib32/librtm.a
index d7e7295..4c627a7 100644
--- a/x86_64-w64-mingw32/lib32/librtm.a
+++ b/x86_64-w64-mingw32/lib32/librtm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/librtutils.a b/x86_64-w64-mingw32/lib32/librtutils.a
index d39d2e8..a8aedf8 100644
--- a/x86_64-w64-mingw32/lib32/librtutils.a
+++ b/x86_64-w64-mingw32/lib32/librtutils.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsamcli.a b/x86_64-w64-mingw32/lib32/libsamcli.a
index 0467b60..b2093ae 100644
--- a/x86_64-w64-mingw32/lib32/libsamcli.a
+++ b/x86_64-w64-mingw32/lib32/libsamcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsapi.a b/x86_64-w64-mingw32/lib32/libsapi.a
new file mode 100644
index 0000000..4fce3ad
--- /dev/null
+++ b/x86_64-w64-mingw32/lib32/libsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libschedcli.a b/x86_64-w64-mingw32/lib32/libschedcli.a
index 5ecd9c6..0429498 100644
--- a/x86_64-w64-mingw32/lib32/libschedcli.a
+++ b/x86_64-w64-mingw32/lib32/libschedcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libscrnsave.a b/x86_64-w64-mingw32/lib32/libscrnsave.a
index d109cdc..72b8053 100644
--- a/x86_64-w64-mingw32/lib32/libscrnsave.a
+++ b/x86_64-w64-mingw32/lib32/libscrnsave.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libscrnsavw.a b/x86_64-w64-mingw32/lib32/libscrnsavw.a
index b6eeeff..574a9ed 100644
--- a/x86_64-w64-mingw32/lib32/libscrnsavw.a
+++ b/x86_64-w64-mingw32/lib32/libscrnsavw.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libscsiport.a b/x86_64-w64-mingw32/lib32/libscsiport.a
index ea35337..94e0c4e 100644
--- a/x86_64-w64-mingw32/lib32/libscsiport.a
+++ b/x86_64-w64-mingw32/lib32/libscsiport.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsecur32.a b/x86_64-w64-mingw32/lib32/libsecur32.a
index 16ef0c3..c6c8cba 100644
--- a/x86_64-w64-mingw32/lib32/libsecur32.a
+++ b/x86_64-w64-mingw32/lib32/libsecur32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsensorsapi.a b/x86_64-w64-mingw32/lib32/libsensorsapi.a
index c613271..2c425d3 100644
--- a/x86_64-w64-mingw32/lib32/libsensorsapi.a
+++ b/x86_64-w64-mingw32/lib32/libsensorsapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsetupapi.a b/x86_64-w64-mingw32/lib32/libsetupapi.a
index 5741b41..eb40b13 100644
--- a/x86_64-w64-mingw32/lib32/libsetupapi.a
+++ b/x86_64-w64-mingw32/lib32/libsetupapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libshell32.a b/x86_64-w64-mingw32/lib32/libshell32.a
index 20bf7cf..48d4676 100644
--- a/x86_64-w64-mingw32/lib32/libshell32.a
+++ b/x86_64-w64-mingw32/lib32/libshell32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libshfolder.a b/x86_64-w64-mingw32/lib32/libshfolder.a
index 939ccfa..85b6bc7 100644
--- a/x86_64-w64-mingw32/lib32/libshfolder.a
+++ b/x86_64-w64-mingw32/lib32/libshfolder.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libshlwapi.a b/x86_64-w64-mingw32/lib32/libshlwapi.a
index 67f8dbc..781c5d1 100644
--- a/x86_64-w64-mingw32/lib32/libshlwapi.a
+++ b/x86_64-w64-mingw32/lib32/libshlwapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libslc.a b/x86_64-w64-mingw32/lib32/libslc.a
index 1a4bdbf..e62c3d3 100644
--- a/x86_64-w64-mingw32/lib32/libslc.a
+++ b/x86_64-w64-mingw32/lib32/libslc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libslcext.a b/x86_64-w64-mingw32/lib32/libslcext.a
index ad17400..aef2b44 100644
--- a/x86_64-w64-mingw32/lib32/libslcext.a
+++ b/x86_64-w64-mingw32/lib32/libslcext.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libslwga.a b/x86_64-w64-mingw32/lib32/libslwga.a
index b5cbe5f..5cbd64d 100644
--- a/x86_64-w64-mingw32/lib32/libslwga.a
+++ b/x86_64-w64-mingw32/lib32/libslwga.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsnmpapi.a b/x86_64-w64-mingw32/lib32/libsnmpapi.a
index 583ade3..4a9e709 100644
--- a/x86_64-w64-mingw32/lib32/libsnmpapi.a
+++ b/x86_64-w64-mingw32/lib32/libsnmpapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libspoolss.a b/x86_64-w64-mingw32/lib32/libspoolss.a
index fcea7a3..a5ca324 100644
--- a/x86_64-w64-mingw32/lib32/libspoolss.a
+++ b/x86_64-w64-mingw32/lib32/libspoolss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsrvcli.a b/x86_64-w64-mingw32/lib32/libsrvcli.a
index 8ee7dd6..fc655f1 100644
--- a/x86_64-w64-mingw32/lib32/libsrvcli.a
+++ b/x86_64-w64-mingw32/lib32/libsrvcli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libssp.a b/x86_64-w64-mingw32/lib32/libssp.a
index 53d2ac1..e2dc579 100644
--- a/x86_64-w64-mingw32/lib32/libssp.a
+++ b/x86_64-w64-mingw32/lib32/libssp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libssp_nonshared.a b/x86_64-w64-mingw32/lib32/libssp_nonshared.a
index f1d540b..ce919be 100644
--- a/x86_64-w64-mingw32/lib32/libssp_nonshared.a
+++ b/x86_64-w64-mingw32/lib32/libssp_nonshared.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsspicli.a b/x86_64-w64-mingw32/lib32/libsspicli.a
index c2b5291..e65206b 100644
--- a/x86_64-w64-mingw32/lib32/libsspicli.a
+++ b/x86_64-w64-mingw32/lib32/libsspicli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libstdc++.a b/x86_64-w64-mingw32/lib32/libstdc++.a
index 7736d36..9bec70f 100644
--- a/x86_64-w64-mingw32/lib32/libstdc++.a
+++ b/x86_64-w64-mingw32/lib32/libstdc++.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libstrmiids.a b/x86_64-w64-mingw32/lib32/libstrmiids.a
index 5aea884..b685dd6 100644
--- a/x86_64-w64-mingw32/lib32/libstrmiids.a
+++ b/x86_64-w64-mingw32/lib32/libstrmiids.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsupc++.a b/x86_64-w64-mingw32/lib32/libsupc++.a
index d7b0415..455e3eb 100644
--- a/x86_64-w64-mingw32/lib32/libsupc++.a
+++ b/x86_64-w64-mingw32/lib32/libsupc++.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsvrapi.a b/x86_64-w64-mingw32/lib32/libsvrapi.a
index 7cdf262..6cba428 100644
--- a/x86_64-w64-mingw32/lib32/libsvrapi.a
+++ b/x86_64-w64-mingw32/lib32/libsvrapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libsxs.a b/x86_64-w64-mingw32/lib32/libsxs.a
index 7967172..ab8a8ec 100644
--- a/x86_64-w64-mingw32/lib32/libsxs.a
+++ b/x86_64-w64-mingw32/lib32/libsxs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libt2embed.a b/x86_64-w64-mingw32/lib32/libt2embed.a
index b38fe85..2a5404d 100644
--- a/x86_64-w64-mingw32/lib32/libt2embed.a
+++ b/x86_64-w64-mingw32/lib32/libt2embed.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libtapi32.a b/x86_64-w64-mingw32/lib32/libtapi32.a
index 0df692b..7189f9d 100644
--- a/x86_64-w64-mingw32/lib32/libtapi32.a
+++ b/x86_64-w64-mingw32/lib32/libtapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libtbs.a b/x86_64-w64-mingw32/lib32/libtbs.a
index 7032a88..0a345f1 100644
--- a/x86_64-w64-mingw32/lib32/libtbs.a
+++ b/x86_64-w64-mingw32/lib32/libtbs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libtdh.a b/x86_64-w64-mingw32/lib32/libtdh.a
index 91fa532..0b5e982 100644
--- a/x86_64-w64-mingw32/lib32/libtdh.a
+++ b/x86_64-w64-mingw32/lib32/libtdh.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libtdi.a b/x86_64-w64-mingw32/lib32/libtdi.a
index 685c04d..d17e14e 100644
--- a/x86_64-w64-mingw32/lib32/libtdi.a
+++ b/x86_64-w64-mingw32/lib32/libtdi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libtxfw32.a b/x86_64-w64-mingw32/lib32/libtxfw32.a
index 9a02048..ebd4cbf 100644
--- a/x86_64-w64-mingw32/lib32/libtxfw32.a
+++ b/x86_64-w64-mingw32/lib32/libtxfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liburl.a b/x86_64-w64-mingw32/lib32/liburl.a
index 29a4bad..7c0358c 100644
--- a/x86_64-w64-mingw32/lib32/liburl.a
+++ b/x86_64-w64-mingw32/lib32/liburl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/liburlmon.a b/x86_64-w64-mingw32/lib32/liburlmon.a
index 4eab32a..8e0654e 100644
--- a/x86_64-w64-mingw32/lib32/liburlmon.a
+++ b/x86_64-w64-mingw32/lib32/liburlmon.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libusbcamd.a b/x86_64-w64-mingw32/lib32/libusbcamd.a
index 13e7810..33025ed 100644
--- a/x86_64-w64-mingw32/lib32/libusbcamd.a
+++ b/x86_64-w64-mingw32/lib32/libusbcamd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libusbcamd2.a b/x86_64-w64-mingw32/lib32/libusbcamd2.a
index 830b816..5181cdc 100644
--- a/x86_64-w64-mingw32/lib32/libusbcamd2.a
+++ b/x86_64-w64-mingw32/lib32/libusbcamd2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libusbd.a b/x86_64-w64-mingw32/lib32/libusbd.a
index 7f6f32e..1ae3fe8 100644
--- a/x86_64-w64-mingw32/lib32/libusbd.a
+++ b/x86_64-w64-mingw32/lib32/libusbd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libusbport.a b/x86_64-w64-mingw32/lib32/libusbport.a
index 49b246c..22a84b9 100644
--- a/x86_64-w64-mingw32/lib32/libusbport.a
+++ b/x86_64-w64-mingw32/lib32/libusbport.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libuser32.a b/x86_64-w64-mingw32/lib32/libuser32.a
index ea8e4da..93e04e3 100644
--- a/x86_64-w64-mingw32/lib32/libuser32.a
+++ b/x86_64-w64-mingw32/lib32/libuser32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libuserenv.a b/x86_64-w64-mingw32/lib32/libuserenv.a
index 718380f..5a45f25 100644
--- a/x86_64-w64-mingw32/lib32/libuserenv.a
+++ b/x86_64-w64-mingw32/lib32/libuserenv.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libusp10.a b/x86_64-w64-mingw32/lib32/libusp10.a
index aa2f41d..386f62c 100644
--- a/x86_64-w64-mingw32/lib32/libusp10.a
+++ b/x86_64-w64-mingw32/lib32/libusp10.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libuuid.a b/x86_64-w64-mingw32/lib32/libuuid.a
index 20117e5..01de1ee 100644
--- a/x86_64-w64-mingw32/lib32/libuuid.a
+++ b/x86_64-w64-mingw32/lib32/libuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libuxtheme.a b/x86_64-w64-mingw32/lib32/libuxtheme.a
index 4b9f8ae..9444f6f 100644
--- a/x86_64-w64-mingw32/lib32/libuxtheme.a
+++ b/x86_64-w64-mingw32/lib32/libuxtheme.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvdmdbg.a b/x86_64-w64-mingw32/lib32/libvdmdbg.a
index bb5346b..eccf09d 100644
--- a/x86_64-w64-mingw32/lib32/libvdmdbg.a
+++ b/x86_64-w64-mingw32/lib32/libvdmdbg.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libversion.a b/x86_64-w64-mingw32/lib32/libversion.a
index 4fff4b2..b33dead 100644
--- a/x86_64-w64-mingw32/lib32/libversion.a
+++ b/x86_64-w64-mingw32/lib32/libversion.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvfw32.a b/x86_64-w64-mingw32/lib32/libvfw32.a
index 31aaa65..5d44be4 100644
--- a/x86_64-w64-mingw32/lib32/libvfw32.a
+++ b/x86_64-w64-mingw32/lib32/libvfw32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvideoprt.a b/x86_64-w64-mingw32/lib32/libvideoprt.a
index c9a2943..76806f2 100644
--- a/x86_64-w64-mingw32/lib32/libvideoprt.a
+++ b/x86_64-w64-mingw32/lib32/libvideoprt.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvirtdisk.a b/x86_64-w64-mingw32/lib32/libvirtdisk.a
index d607b33..25dbb6c 100644
--- a/x86_64-w64-mingw32/lib32/libvirtdisk.a
+++ b/x86_64-w64-mingw32/lib32/libvirtdisk.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvss_ps.a b/x86_64-w64-mingw32/lib32/libvss_ps.a
index f9b2c38..594a45a 100644
--- a/x86_64-w64-mingw32/lib32/libvss_ps.a
+++ b/x86_64-w64-mingw32/lib32/libvss_ps.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvssapi.a b/x86_64-w64-mingw32/lib32/libvssapi.a
index 8b5a7cb..00627f9 100644
--- a/x86_64-w64-mingw32/lib32/libvssapi.a
+++ b/x86_64-w64-mingw32/lib32/libvssapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libvsstrace.a b/x86_64-w64-mingw32/lib32/libvsstrace.a
index 1d747fb..ce219f4 100644
--- a/x86_64-w64-mingw32/lib32/libvsstrace.a
+++ b/x86_64-w64-mingw32/lib32/libvsstrace.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwbemuuid.a b/x86_64-w64-mingw32/lib32/libwbemuuid.a
index f61a7d7..c6836dd 100644
--- a/x86_64-w64-mingw32/lib32/libwbemuuid.a
+++ b/x86_64-w64-mingw32/lib32/libwbemuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdsclient.a b/x86_64-w64-mingw32/lib32/libwdsclient.a
index 673f4de..5b832bd 100644
--- a/x86_64-w64-mingw32/lib32/libwdsclient.a
+++ b/x86_64-w64-mingw32/lib32/libwdsclient.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdsclientapi.a b/x86_64-w64-mingw32/lib32/libwdsclientapi.a
index 4f0edb7..a7bb549 100644
--- a/x86_64-w64-mingw32/lib32/libwdsclientapi.a
+++ b/x86_64-w64-mingw32/lib32/libwdsclientapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdscore.a b/x86_64-w64-mingw32/lib32/libwdscore.a
index eb0cf6a..80ac78a 100644
--- a/x86_64-w64-mingw32/lib32/libwdscore.a
+++ b/x86_64-w64-mingw32/lib32/libwdscore.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdscsl.a b/x86_64-w64-mingw32/lib32/libwdscsl.a
index 104d352..0743660 100644
--- a/x86_64-w64-mingw32/lib32/libwdscsl.a
+++ b/x86_64-w64-mingw32/lib32/libwdscsl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdsimage.a b/x86_64-w64-mingw32/lib32/libwdsimage.a
index 39df73b..d099299 100644
--- a/x86_64-w64-mingw32/lib32/libwdsimage.a
+++ b/x86_64-w64-mingw32/lib32/libwdsimage.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdstptc.a b/x86_64-w64-mingw32/lib32/libwdstptc.a
index 4351977..fd3adcd 100644
--- a/x86_64-w64-mingw32/lib32/libwdstptc.a
+++ b/x86_64-w64-mingw32/lib32/libwdstptc.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdsupgcompl.a b/x86_64-w64-mingw32/lib32/libwdsupgcompl.a
index 974b37b..92ca0f6 100644
--- a/x86_64-w64-mingw32/lib32/libwdsupgcompl.a
+++ b/x86_64-w64-mingw32/lib32/libwdsupgcompl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwdsutil.a b/x86_64-w64-mingw32/lib32/libwdsutil.a
index de20b4c..4fda8c9 100644
--- a/x86_64-w64-mingw32/lib32/libwdsutil.a
+++ b/x86_64-w64-mingw32/lib32/libwdsutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwecapi.a b/x86_64-w64-mingw32/lib32/libwecapi.a
index 8bee233..0f01d15 100644
--- a/x86_64-w64-mingw32/lib32/libwecapi.a
+++ b/x86_64-w64-mingw32/lib32/libwecapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwer.a b/x86_64-w64-mingw32/lib32/libwer.a
index ec1b43d..e996990 100644
--- a/x86_64-w64-mingw32/lib32/libwer.a
+++ b/x86_64-w64-mingw32/lib32/libwer.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwevtapi.a b/x86_64-w64-mingw32/lib32/libwevtapi.a
index 4519fba..73f4da9 100644
--- a/x86_64-w64-mingw32/lib32/libwevtapi.a
+++ b/x86_64-w64-mingw32/lib32/libwevtapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwevtfwd.a b/x86_64-w64-mingw32/lib32/libwevtfwd.a
index 6fcbacf..3f6ddfc 100644
--- a/x86_64-w64-mingw32/lib32/libwevtfwd.a
+++ b/x86_64-w64-mingw32/lib32/libwevtfwd.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwiadss.a b/x86_64-w64-mingw32/lib32/libwiadss.a
index 1eb1aa4..189d92d 100644
--- a/x86_64-w64-mingw32/lib32/libwiadss.a
+++ b/x86_64-w64-mingw32/lib32/libwiadss.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwin32k.a b/x86_64-w64-mingw32/lib32/libwin32k.a
index f8b459b..7abebe9 100644
--- a/x86_64-w64-mingw32/lib32/libwin32k.a
+++ b/x86_64-w64-mingw32/lib32/libwin32k.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwin32spl.a b/x86_64-w64-mingw32/lib32/libwin32spl.a
index 35a4ca8..fbaea37 100644
--- a/x86_64-w64-mingw32/lib32/libwin32spl.a
+++ b/x86_64-w64-mingw32/lib32/libwin32spl.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwindowscodecs.a b/x86_64-w64-mingw32/lib32/libwindowscodecs.a
index 05e0a8e..8b51f76 100644
--- a/x86_64-w64-mingw32/lib32/libwindowscodecs.a
+++ b/x86_64-w64-mingw32/lib32/libwindowscodecs.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinhttp.a b/x86_64-w64-mingw32/lib32/libwinhttp.a
index ae1f94b..f8b8bfc 100644
--- a/x86_64-w64-mingw32/lib32/libwinhttp.a
+++ b/x86_64-w64-mingw32/lib32/libwinhttp.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwininet.a b/x86_64-w64-mingw32/lib32/libwininet.a
index 567f951..1801a03 100644
--- a/x86_64-w64-mingw32/lib32/libwininet.a
+++ b/x86_64-w64-mingw32/lib32/libwininet.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinmm.a b/x86_64-w64-mingw32/lib32/libwinmm.a
index abce86a..53e5754 100644
--- a/x86_64-w64-mingw32/lib32/libwinmm.a
+++ b/x86_64-w64-mingw32/lib32/libwinmm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinpthread-1.dll b/x86_64-w64-mingw32/lib32/libwinpthread-1.dll
index 94e343a..3aa88d7 100755
--- a/x86_64-w64-mingw32/lib32/libwinpthread-1.dll
+++ b/x86_64-w64-mingw32/lib32/libwinpthread-1.dll
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinpthread.a b/x86_64-w64-mingw32/lib32/libwinpthread.a
index 94093e6..593ba58 100644
--- a/x86_64-w64-mingw32/lib32/libwinpthread.a
+++ b/x86_64-w64-mingw32/lib32/libwinpthread.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinpthread.dll.a b/x86_64-w64-mingw32/lib32/libwinpthread.dll.a
index 556d91d..082d8db 100755
--- a/x86_64-w64-mingw32/lib32/libwinpthread.dll.a
+++ b/x86_64-w64-mingw32/lib32/libwinpthread.dll.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinscard.a b/x86_64-w64-mingw32/lib32/libwinscard.a
index 414817e..1b8a504 100644
--- a/x86_64-w64-mingw32/lib32/libwinscard.a
+++ b/x86_64-w64-mingw32/lib32/libwinscard.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinspool.a b/x86_64-w64-mingw32/lib32/libwinspool.a
index 14500d4..e5ad53b 100644
--- a/x86_64-w64-mingw32/lib32/libwinspool.a
+++ b/x86_64-w64-mingw32/lib32/libwinspool.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinstrm.a b/x86_64-w64-mingw32/lib32/libwinstrm.a
index 6281b5c..5a73eca 100644
--- a/x86_64-w64-mingw32/lib32/libwinstrm.a
+++ b/x86_64-w64-mingw32/lib32/libwinstrm.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwintrust.a b/x86_64-w64-mingw32/lib32/libwintrust.a
index ba9930b..71868e3 100644
--- a/x86_64-w64-mingw32/lib32/libwintrust.a
+++ b/x86_64-w64-mingw32/lib32/libwintrust.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwinusb.a b/x86_64-w64-mingw32/lib32/libwinusb.a
index 13f0fed..21b66e9 100644
--- a/x86_64-w64-mingw32/lib32/libwinusb.a
+++ b/x86_64-w64-mingw32/lib32/libwinusb.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwkscli.a b/x86_64-w64-mingw32/lib32/libwkscli.a
index 2253e29..5e39ce0 100644
--- a/x86_64-w64-mingw32/lib32/libwkscli.a
+++ b/x86_64-w64-mingw32/lib32/libwkscli.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwlanapi.a b/x86_64-w64-mingw32/lib32/libwlanapi.a
index d8f9c98..214bebf 100644
--- a/x86_64-w64-mingw32/lib32/libwlanapi.a
+++ b/x86_64-w64-mingw32/lib32/libwlanapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwlanui.a b/x86_64-w64-mingw32/lib32/libwlanui.a
index 5dd0864..1375883 100644
--- a/x86_64-w64-mingw32/lib32/libwlanui.a
+++ b/x86_64-w64-mingw32/lib32/libwlanui.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwlanutil.a b/x86_64-w64-mingw32/lib32/libwlanutil.a
index c6a7ffd..4a67b37 100644
--- a/x86_64-w64-mingw32/lib32/libwlanutil.a
+++ b/x86_64-w64-mingw32/lib32/libwlanutil.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwldap32.a b/x86_64-w64-mingw32/lib32/libwldap32.a
index be92993..249b361 100644
--- a/x86_64-w64-mingw32/lib32/libwldap32.a
+++ b/x86_64-w64-mingw32/lib32/libwldap32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwmcodecdspuuid.a b/x86_64-w64-mingw32/lib32/libwmcodecdspuuid.a
index e860560..c4bccef 100644
--- a/x86_64-w64-mingw32/lib32/libwmcodecdspuuid.a
+++ b/x86_64-w64-mingw32/lib32/libwmcodecdspuuid.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwmilib.a b/x86_64-w64-mingw32/lib32/libwmilib.a
index 0d14647..c3f6970 100644
--- a/x86_64-w64-mingw32/lib32/libwmilib.a
+++ b/x86_64-w64-mingw32/lib32/libwmilib.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwow32.a b/x86_64-w64-mingw32/lib32/libwow32.a
index 210a219..78f2b36 100644
--- a/x86_64-w64-mingw32/lib32/libwow32.a
+++ b/x86_64-w64-mingw32/lib32/libwow32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libws2_32.a b/x86_64-w64-mingw32/lib32/libws2_32.a
index f230671..50f17af 100644
--- a/x86_64-w64-mingw32/lib32/libws2_32.a
+++ b/x86_64-w64-mingw32/lib32/libws2_32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwsdapi.a b/x86_64-w64-mingw32/lib32/libwsdapi.a
index 7667d27..c0051cb 100644
--- a/x86_64-w64-mingw32/lib32/libwsdapi.a
+++ b/x86_64-w64-mingw32/lib32/libwsdapi.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwsnmp32.a b/x86_64-w64-mingw32/lib32/libwsnmp32.a
index 3abaa0e..afbc2e9 100644
--- a/x86_64-w64-mingw32/lib32/libwsnmp32.a
+++ b/x86_64-w64-mingw32/lib32/libwsnmp32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwsock32.a b/x86_64-w64-mingw32/lib32/libwsock32.a
index 158c97b..5c7f1d3 100644
--- a/x86_64-w64-mingw32/lib32/libwsock32.a
+++ b/x86_64-w64-mingw32/lib32/libwsock32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwst.a b/x86_64-w64-mingw32/lib32/libwst.a
index 1135a14..423acc1 100644
--- a/x86_64-w64-mingw32/lib32/libwst.a
+++ b/x86_64-w64-mingw32/lib32/libwst.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libwtsapi32.a b/x86_64-w64-mingw32/lib32/libwtsapi32.a
index 1a3faf4..a9e26db 100644
--- a/x86_64-w64-mingw32/lib32/libwtsapi32.a
+++ b/x86_64-w64-mingw32/lib32/libwtsapi32.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio.a b/x86_64-w64-mingw32/lib32/libx3daudio.a
index b8d1cdf..f009ac0 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_2.a b/x86_64-w64-mingw32/lib32/libx3daudio1_2.a
index 82cc76b..1d647f1 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_2.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_3.a b/x86_64-w64-mingw32/lib32/libx3daudio1_3.a
index ee0930b..27ee2c1 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_3.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_4.a b/x86_64-w64-mingw32/lib32/libx3daudio1_4.a
index 331d32e..31036a8 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_4.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_5.a b/x86_64-w64-mingw32/lib32/libx3daudio1_5.a
index c3eb7d1..10b9e27 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_5.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_6.a b/x86_64-w64-mingw32/lib32/libx3daudio1_6.a
index ad80007..fc1c312 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_6.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_6.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudio1_7.a b/x86_64-w64-mingw32/lib32/libx3daudio1_7.a
index 35504d6..29ee75e 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudio1_7.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudio1_7.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libx3daudiod1_7.a b/x86_64-w64-mingw32/lib32/libx3daudiod1_7.a
index 1906261..bf32fd8 100644
--- a/x86_64-w64-mingw32/lib32/libx3daudiod1_7.a
+++ b/x86_64-w64-mingw32/lib32/libx3daudiod1_7.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx.a b/x86_64-w64-mingw32/lib32/libxapofx.a
index 449bf60..dc1d6e3 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_0.a b/x86_64-w64-mingw32/lib32/libxapofx1_0.a
index d9eb77f..887e55e 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_0.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_1.a b/x86_64-w64-mingw32/lib32/libxapofx1_1.a
index 9375028..7f880fa 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_1.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_2.a b/x86_64-w64-mingw32/lib32/libxapofx1_2.a
index 7372054..e15695d 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_2.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_3.a b/x86_64-w64-mingw32/lib32/libxapofx1_3.a
index bc46a5e..009df9e 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_3.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_4.a b/x86_64-w64-mingw32/lib32/libxapofx1_4.a
index d1b9e9d..3b3d778 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_4.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofx1_5.a b/x86_64-w64-mingw32/lib32/libxapofx1_5.a
index 4a8e2c8..574d3e7 100644
--- a/x86_64-w64-mingw32/lib32/libxapofx1_5.a
+++ b/x86_64-w64-mingw32/lib32/libxapofx1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxapofxd1_5.a b/x86_64-w64-mingw32/lib32/libxapofxd1_5.a
index 171d722..c23d214 100644
--- a/x86_64-w64-mingw32/lib32/libxapofxd1_5.a
+++ b/x86_64-w64-mingw32/lib32/libxapofxd1_5.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxaudio2_8.a b/x86_64-w64-mingw32/lib32/libxaudio2_8.a
index e2e8364..22762af 100644
--- a/x86_64-w64-mingw32/lib32/libxaudio2_8.a
+++ b/x86_64-w64-mingw32/lib32/libxaudio2_8.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput.a b/x86_64-w64-mingw32/lib32/libxinput.a
index e2af9e1..8544e0c 100644
--- a/x86_64-w64-mingw32/lib32/libxinput.a
+++ b/x86_64-w64-mingw32/lib32/libxinput.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput1_1.a b/x86_64-w64-mingw32/lib32/libxinput1_1.a
index 8a2121d..8d5f2b5 100644
--- a/x86_64-w64-mingw32/lib32/libxinput1_1.a
+++ b/x86_64-w64-mingw32/lib32/libxinput1_1.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput1_2.a b/x86_64-w64-mingw32/lib32/libxinput1_2.a
index 7c12734..d2dca07 100644
--- a/x86_64-w64-mingw32/lib32/libxinput1_2.a
+++ b/x86_64-w64-mingw32/lib32/libxinput1_2.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput1_3.a b/x86_64-w64-mingw32/lib32/libxinput1_3.a
index 4f42832..0678b5e 100644
--- a/x86_64-w64-mingw32/lib32/libxinput1_3.a
+++ b/x86_64-w64-mingw32/lib32/libxinput1_3.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput1_4.a b/x86_64-w64-mingw32/lib32/libxinput1_4.a
index 3df0682..82998b1 100644
--- a/x86_64-w64-mingw32/lib32/libxinput1_4.a
+++ b/x86_64-w64-mingw32/lib32/libxinput1_4.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/libxinput9_1_0.a b/x86_64-w64-mingw32/lib32/libxinput9_1_0.a
index 57bfec9..db83c91 100644
--- a/x86_64-w64-mingw32/lib32/libxinput9_1_0.a
+++ b/x86_64-w64-mingw32/lib32/libxinput9_1_0.a
Binary files differ
diff --git a/x86_64-w64-mingw32/lib32/txtmode.o b/x86_64-w64-mingw32/lib32/txtmode.o
index 50f9a94..74e8cc5 100644
--- a/x86_64-w64-mingw32/lib32/txtmode.o
+++ b/x86_64-w64-mingw32/lib32/txtmode.o
Binary files differ