Commit Graph

586 Commits

Author SHA1 Message Date
James Hawkins 2d044dd64b Use InterlockedDecrement and InterlockedIncrement instead of ++/--. 2004-09-16 19:08:23 +00:00
Alex Villacís Lasso 6df12bb338 Add de-interleaving for GIF images. 2004-09-16 19:07:42 +00:00
Marcus Meissner 00cf13a6e1 Autodetect libgif so extension and try to load it. 2004-09-14 19:27:58 +00:00
Alexandre Julliard 241a4c34b1 Get rid of the non-standard ICOM_THIS macro. 2004-09-09 21:03:58 +00:00
Robert Shearman 2a54aac7c5 - Make typelib marshaler thread-safe (problem reported by Aric
Stewart).
- Several small cleanups.
2004-09-07 20:42:26 +00:00
Francois Gouget 508d51e69c Remove bogus #define statement. 2004-09-07 19:33:23 +00:00
Alexandre Julliard 39a696a166 Removed some uses of the non-standard ICOM_THIS macro. 2004-09-06 20:34:29 +00:00
Francois Gouget 27ca26bcb1 Detect whether Visual Studio can cast __uint64's to floats and disable
the relevant tests if it cannot.
Fix a double to float literal conversion warning.
2004-09-02 20:05:55 +00:00
Francois Gouget d0f10ac268 Remove references to ICOM_THIS and WINE_UNUSED as they don't exist on
Windows.
Define COBJMACROS so we get the IRecordInfo_* macros.
2004-09-01 04:53:52 +00:00
Filip Navara ff5ecfd89a For non-overlapped writes the lpNumberOfBytesWritten parameter of
WriteFile mustn't be NULL.
2004-08-30 18:40:06 +00:00
Jacek Caban 124eb32ea7 Added Polish translation. 2004-08-30 18:38:27 +00:00
Jacek Caban ab4b5fbd70 Added suport for optional arguments in ITypeInfo::Invoke. 2004-08-27 19:10:47 +00:00
Jason Edmeades 9638e02d7d Ensure digits are printable characters from oleaut32 Format command. 2004-08-26 00:28:37 +00:00
Jacek Caban 3a2574e3cc Fix handling of VARIANT with VT_BYREF and null pointer in
VariantChangeTypeEx.
2004-08-25 00:38:59 +00:00
Robert Shearman 25b74d2cfe More safe array tests. 2004-08-24 18:42:53 +00:00
Alexandre Julliard f714b39762 Get rid of the no longer used ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
macro.
2004-08-23 19:39:48 +00:00
Alexandre Julliard 25e2a320a7 Don't define BEGIN_INTERFACE in unknwn.h. 2004-08-22 21:38:46 +00:00
Robert Shearman 93010bf32f Added implementation for IPersistPropertyBag_Load on OLEFont (based on
a patch by Alex Villacís Lasso).
2004-08-20 19:58:46 +00:00
Jacek Caban bf9f8da333 Ref counting fixes. 2004-08-19 20:29:16 +00:00
Alex Villacís Lasso e9b0ea1554 Add detection of graphic file header in picture load, treat it as
no-header case.
2004-08-18 20:53:09 +00:00
Alex Villacís Lasso d44027e206 Apply HIMETRIC transformation on icons, just like bitmaps. 2004-08-18 00:26:44 +00:00
Francois Gouget 08177d6d7b The Windows headers support for NONAMELESSUNION and NONAMELESSSTRUCT
is unusable. So don't force this mode. Instead check whether
NONAMELESSUNION and/or NONAMELESSSTRUCT are set (by the Wine headers)
and define custom access macros accordingly.
2004-08-13 19:49:53 +00:00
Alexandre Julliard 936198ce45 Moved ICOM_THIS_MULTI definition out of objbase.h and into the files
that use it.
2004-08-13 00:44:22 +00:00
Alexandre Julliard 48c4bb3c31 Get rid of the non-standard ICOM_VTABLE macro. 2004-08-12 23:00:51 +00:00
Alexandre Julliard 0467ce9fd7 Get rid of the non-standard ICOM_VFIELD macro. 2004-08-12 19:52:49 +00:00
Alexandre Julliard b459952144 Avoid some non-portable makefile constructs, and get rid of the
ALTNAMES variable.
2004-08-11 23:59:06 +00:00
Francois Gouget bf72af30d0 Modify widl to put the C COM macros inside an #ifdef COBJMACROS block
as is done in the Windows headers.
Add #define COBJMACROS where needed in Wine.
Fixes the compilation of the oleaut32/tests/olefont.c and
urlmon/tests/url.c conformance tests with the Windows headers.
2004-08-11 19:43:45 +00:00
Huw Davies e82dfab20f dlopen libungif and libjpeg. 2004-08-04 19:10:26 +00:00
Mike Hearn 6545d994af Disconnect the server object from the stub on stub destruction. 2004-07-30 18:43:27 +00:00
Henning Gerhardt 74cebde291 Translated some English resource files into German. 2004-07-12 19:55:59 +00:00
Mike McCormack 0394eeed8d Refcounting fixes. 2004-07-06 21:28:13 +00:00
Mike Hearn f349cbb72b Move variant code to its own debug channel. 2004-07-04 00:09:11 +00:00
Mike Hearn 3186bd2300 Make typelib marshaller safe for systems that don't allow executable
code on the heap, plug a leak of the assembly stub block.
2004-06-28 23:51:24 +00:00
Mike Hearn 163eb22bff Dump function return type in typelib traces, add trace support for
VT_HRESULT.
2004-06-28 20:31:39 +00:00
Mike Hearn e1d7def952 Change REFIID to IID* for stack declarations to avoid initializers
being discarded.
2004-06-28 20:30:29 +00:00
Mike Hearn 86cc2d54c7 - Don't ERR on a used connection being destroyed.
- Don't print an extra newline in the olerelay code.
2004-06-23 00:10:29 +00:00
Mike Hearn d440ca4a89 Fix typelib marshaller relaying, add a comment describing what it is,
don't print the ugly L"" parts of Unicode strings in the relay trace.
2004-06-17 23:03:26 +00:00
Robert Shearman bc06d4ba8e - Fix ref count on standard proxy creation.
- Release channel buffer in StdMarshal_UnmarshalInterface, since we no
  longer use it and the proxy should have taken a reference on it.
- Add a few comments.
2004-06-14 17:58:03 +00:00
Ivan Leo Puoti c01570cc33 Removed dcom link. 2004-05-29 00:22:38 +00:00
Alex Villacís Lasso a286a30ab7 Added stub for GetRecordInfoFromGuids. 2004-05-27 01:55:54 +00:00
Maxime Bellengé 426b02362b Correctly create the byte array of gif images to match what
CreateDIBitmap expects.
2004-05-10 19:56:34 +00:00
Jon Griffiths 0d1b4239fd Trace the system and user locales upon startup.
Print the returned string if VarDateChangeTypeEx fails.
2004-05-05 19:00:21 +00:00
Maxime Bellengé 90bcfdca87 - Fix palette creation.
- Fix upside down Gif.
- Add support for transparent Gif.
2004-05-04 02:53:48 +00:00
Jon Griffiths 89450e7cbd Implement VarDateFromUdateEx. 2004-04-30 18:32:58 +00:00
Jon Griffiths d275676215 Fix failures under win2k. 2004-04-27 23:30:10 +00:00
Jon Griffiths 309ed0641e Update VarXor,VarAbs,VarNot for all input types.
Test VarOr; fix a failure with later oleaut32 versions.
Speed up compilation by sharing failure strings.
2004-04-27 23:29:58 +00:00
Jon Griffiths befb3a9980 Implement VarOr.
Fixes for untested VarXor,VarAbs,VarNot input types.
2004-04-27 23:29:37 +00:00
Jon Griffiths 30febfc87c Test ClearCustData() and UINT->I4 conversion. 2004-04-23 21:31:37 +00:00
Jon Griffiths 0c93b1f0a7 Implement ClearCustData. 2004-04-23 21:31:16 +00:00
Jon Griffiths 17ac230bbf Check the correct param for 2 DECIMAL operations. 2004-04-23 21:30:32 +00:00
Jon Griffiths 9b609135e1 Conversion from VT_UINT to VT_I4 ignores overflow. 2004-04-23 21:29:49 +00:00
Chris Morgan 58dcfb6205 Skip over most of the unused variant types to speed up the variant
tests.
2004-04-23 02:40:30 +00:00
Francois Gouget 8fc374d8b4 Make Unicode strings 'static const'. 2004-04-20 02:14:00 +00:00
Francois Gouget 52c0832161 Make Unicode strings static const. 2004-04-20 01:12:17 +00:00
Francois Gouget ebf0eb3138 Make static Unicode strings const. 2004-04-20 00:34:52 +00:00
Francois Gouget 6a6c85c6d8 Make Unicode const strings static so they are not copied to the stack
each time we enter the function.
2004-04-19 20:12:14 +00:00
Francois Gouget 0217bfdfed Assorted spelling fixes. 2004-04-12 22:08:23 +00:00
Francois Gouget 359c709d59 Assorted spelling and case fixes. 2004-03-31 20:06:10 +00:00
Alexandre Julliard 9e4ed6460c .spec.c files are no longer used for 32-bit dlls. 2004-03-24 03:36:44 +00:00
Francois Gouget b948778660 Assorted spelling fixes. 2004-03-23 23:20:16 +00:00
Robert Shearman 92940e0c4f BSTR of length 0 is allowed. 2004-03-22 22:57:51 +00:00
Jon Griffiths ad1190e4ab Tests for VarXor/VarEqv. 2004-03-22 20:39:50 +00:00
Jon Griffiths 743b75ab44 Implement VarXor and simplify VarEqv to use it. 2004-03-22 20:39:27 +00:00
Jon Griffiths 071e950344 Implement VarEqv. 2004-03-17 20:49:22 +00:00
Jon Griffiths 19271d7ae9 Use function ptrs for call only present in later versions.
Fix tests that fail with old versions.
2004-03-17 20:47:42 +00:00
Fabian Cenedese 5feedfdc73 Let VarParseNumFromStr and VarNumFromParseNum cope with hex and oct
strings. Needed from VB conversions such as CLng, CInt, CByte...
2004-03-16 19:15:04 +00:00
Alastair Bridgewater 04e4f3cade Implementation of ICreateTypeInfo2_SetHelpContext,
ICreateTypeInfo2_SetTypeDescAlias, ITypeLib2_GetTypeInfoCount,
ITypeLib2_GetTypeInfoType, and ITypeLib2_IsName.
Fix to ICreateTypeInfo2_SetVarName to fix a case where multiple
instances of the same name are used in the same typelib.
2004-03-15 20:05:19 +00:00
Alastair Bridgewater 6e500f6570 Implemented ITypeLib2_GetTypeInfo() and
ITypeLib2_GetTypeInfoOfGuid().
2004-03-13 19:32:41 +00:00
Alastair Bridgewater 70c5612e9d Improve how the GUID hash system works. Mainly a cleanup so that the
hash lookups can be done from other functions.
2004-03-13 19:30:13 +00:00
Alastair Bridgewater ab548adf86 Rename some of the fields in typelib.h to makes more evocative than
'unk00'.
2004-03-13 19:24:58 +00:00
Alexandre Julliard 589e115233 We no longer use the .exe.spec.c files. 2004-03-02 21:16:37 +00:00
Martin Fuchs 4932f56062 Correct return type of SysStringLen() and SysStringByteLen(). 2004-03-01 21:22:59 +00:00
Patrik Stridvall 8f9b09e947 Fixed some issues found by winapi_check. 2004-02-27 21:32:54 +00:00
Fabian Cenedese 3d7034e79e VarRound implementation (without type DECIMAL yet) with test function. 2004-02-26 05:27:11 +00:00
Alexandre Julliard b65d13605c Fixed callers of GetLocaleInfoW to use the correct buffer size. 2004-02-25 01:35:01 +00:00
Fabian Cenedese 7dba7d3138 No sign extension for negative values. 2004-02-25 01:23:49 +00:00
Fabian Cenedese 393ae7d204 Accept VT_BOOL mixed with another type as valid combination in
VarOr/VarAnd.
2004-02-17 20:25:41 +00:00
Alastair Bridgewater e9b36904df Support for a small handful more return value/argument/variable types. 2004-02-10 02:26:06 +00:00
Alastair Bridgewater 822f63dcda Fixes and support for TypeInfo alignment values. 2004-02-10 02:23:19 +00:00
Alastair Bridgewater d4745d5b46 Stubbed-out implementation of the ITypeLib interface.
A fix to ICreateTypeInfo::AddRefTypeInfo() to use Release() instead of
hacking a refcount directly.
A missed API doc comment for the ITypeInfo interface.
2004-02-10 01:35:16 +00:00
Francois Gouget ad5ff7ceeb Assorted spelling and case fixes. 2004-02-09 22:07:42 +00:00
Alastair Bridgewater 453d09035c Preliminary support for ICreateTypeInfo::AddImplType().
Support for ICreateTypeInfo::SetImplTypeFlags().
2004-02-09 22:01:25 +00:00
Alastair Bridgewater f9ce2138d3 Preliminary support for recording custom data in a type library. 2004-02-09 21:44:55 +00:00
Alastair Bridgewater 3c06c308f0 Support for recording the SYSKIND of the type library. 2004-02-09 20:48:34 +00:00
Chris Morgan 21d591ec4f Implement tests for VarMod().
Added char *vtstr() to enhance test debugging by returning a text
string that corresponds to the input type.
2004-02-06 05:23:48 +00:00
Chris Morgan 2d1bccd0c4 Implement VarMod().
Add a few trace outputs.
Fix VarNot() with VT_CY.
Fix VarParseNumFromStr() to work correctly with NUMPRS_HEX_OCT flag.
2004-02-06 05:23:29 +00:00
Alastair Bridgewater ec496b386e Stubbed-out implementation of the ITypeInfo2 interface for the
ICreateTypeInfo2 implementation.
Implementation of ITypeInfo2_fnGetContainingTypeLib().
Preliminary implementation of ICreateTypeInfo2_fnAddRefTypeInfo().
2004-02-03 21:26:00 +00:00
Kirill Smelkov 7b94c7e094 OLEPictureImpl_Load: fix for headerless pictures. 2004-02-03 00:09:41 +00:00
Alastair Bridgewater 5e07be4eb0 Preliminary implementation of ICreateTypeInfo2_fnAddFuncDesc() and
ICreateTypeInfo2_fnSetFuncAndParamNames().
2004-01-28 21:37:14 +00:00
Alastair Bridgewater 681b6aa083 Improvements to ICreateTypeInfo2_fnAddVarDesc().
A separate function to encode TYPEINFO structures.
2004-01-28 20:04:55 +00:00
Francois Gouget 231fbff8d0 Add trailing '\n's to ok() calls. 2004-01-27 04:01:10 +00:00
Alastair Bridgewater 01b93c166c A small number of cleanups.
A new function to find a given NAME in a type library.
Support for growing a tlb segment when it overflows.
Duplicate GUID elimination.
GUID hash fixes.
NAME hash fixes.
Duplicate STRING elimination fixes.
Duplicate IMPORT elimination fixes.
Type information save ordering fixes.
Support for writing out the CUSTDATA and CUSTDATAGUID segments.
2004-01-27 03:59:07 +00:00
Alexandre Julliard 20b4585e3c Only link against libdxguid where necessary. 2004-01-27 00:11:16 +00:00
Francois Gouget 6b6ed724ae Add missing '\n's to debug traces. 2004-01-27 00:01:43 +00:00
Alexandre Julliard d07c1004e3 Moved a few remaining 16-bit definitions out of the standard headers. 2004-01-23 22:51:41 +00:00
Ge van Geldorp 399901e054 Rename LARGE_INTEGER and ULARGE_INTEGER members "s" to "u" to conform
with PSDK.
2004-01-23 01:51:33 +00:00
Alastair Bridgewater ff466b177f Initial implementation of CreateTypeLib2() and the ICreateTypeLib2 and
ICreateTypeInfo2 interfaces.
2004-01-21 22:24:08 +00:00
Jon Griffiths d83ed49148 Remove tests that are covered by vartype.c.
Call by pointer for more functions not available in early versions.
Add tests for VarFix/VarInt/VarNeg, VarFormat "on/off/yes/no".
Fix tests that assumed relative dates.
Make BSTR copy test separate.
2004-01-20 23:38:38 +00:00
Hans Leidekker 301bbc4984 Add missing comma. 2004-01-19 21:48:21 +00:00
Jon Griffiths f4e7227541 Implemented VarInt, VarFix, VarNeg. 2004-01-13 23:16:04 +00:00
Jon Griffiths 757af5fc15 Use integer math in VarCyInt, docs. 2004-01-13 23:02:34 +00:00
Marcus Meissner ff16b32499 SafeArrayRedim: Use the correct size for resize too. 2004-01-12 21:06:30 +00:00
Alexandre Julliard e8283089cb Get rid of no longer needed WINE_PACKED define. 2004-01-09 22:18:49 +00:00
Marcus Meissner 2ac287e875 Copy BSTRs byte wise.
Added a testcase for byte wise copy of VT_BSTR variant with
VariantCopy().
2004-01-09 00:58:01 +00:00
Francois Gouget 640cc3f3e1 Assorted spelling fixes. 2004-01-06 22:08:33 +00:00
Alexandre Julliard bb0d6b7202 Commented out tests that assume that the current year is 2003. 2004-01-02 01:51:38 +00:00
Marcus Meissner 042f8953ff Fixed size calculation on redim if old size was 0. 2003-12-31 18:58:25 +00:00
Marcus Meissner e12ef562a8 Dimensions with cElements=0 are valid and needed by InstallShield.
SafeArrayGetElement: fixed BSTR and LPUNKNOWN handling.
Added testcases for above cases.
2003-12-30 19:06:41 +00:00
Marcus Meissner 09c8cc97f7 Added more argument numbers for _invoke(). 2003-12-30 19:06:21 +00:00
Jon Griffiths b3401e66a3 I8/UI8 are accepted in arrays in recent native dlls.
Test UDTs, array coercion and new functions.
2003-12-15 21:11:25 +00:00
Jon Griffiths d95ee19dfd Use the SafeArray conversion functions when coercing arrays.
Simplify VariantChangeTypeEx.
Replace calls to dump_Variant() with TRACE's.
2003-12-15 21:10:53 +00:00
Jon Griffiths c2d6a6b451 Rewrite: Support I8/UI8,RECORD.
Store array bounds in the same order as native.
Add CreateEx, CreateVectorEx, VectorFromBstr, BstrFromVector.
2003-12-15 21:08:42 +00:00
Marcus Meissner cf50f9a04e Implemented VarInt, VarPow.
Added R4 (float) support to VarAdd.
Added DATE support to VarSub.
2003-12-15 20:14:32 +00:00
Marcus Meissner 30ccb3bd22 Yet another useful hint for missing stdole32.tlb. 2003-12-15 19:47:51 +00:00
Marcus Meissner 2567881312 Do not clear the pointer we just allocated, just the first byte it
points to.
2003-12-15 19:47:10 +00:00
Andrew de Quincey eb4d6e079d - Implemented HELPDIR subkeys properly in RegisterTypeLib().
- Implemented UnRegisterTypeLib().
- Fixed various minor bugs.
2003-12-13 00:04:06 +00:00
Alexandre Julliard 6fee8c95b2 Avoid long long constants (reported by Gerald Pfeifer).
Added a few missing parentheses in macros.
2003-12-12 06:02:31 +00:00
Jon Griffiths 97fc6c3a06 Oops - VT_EMPTY->VT_RECORD is not allowed. 2003-12-11 05:25:59 +00:00
Jon Griffiths 17ce98503b Test almost all of the low level variant functions 2003-12-11 05:25:44 +00:00
Jon Griffiths 7e40baadc1 Reimplement/document every low level variant function.
Implement DECIMAL, I8, UI8 types and other missing conversions.
VariantChangeType: Use LOCALE_USER_DEFAULT as per MSDN.
VariantChangeTypeEx: Support new types, pass proper flags.
VarNumFromParseNum: Support VT_DECIMAL as output.
2003-12-11 04:28:20 +00:00
Andrew de Quincey 8b773b125a Upwards traversal of inheritance tree didn't occur for dispatch
interfaces.
2003-12-10 00:38:17 +00:00
Jon Griffiths 27db93dc6a Fix a couple of tests for w2k (Russian). 2003-12-10 00:37:35 +00:00
Jon Griffiths 85602c218d Fix the tests to pass when locale settings are user-overriden.
Fix those tests which pass now.
Test copying, formatting, VarAbs, VarNot.
2003-12-09 00:05:53 +00:00
Jon Griffiths 7e7ca4ac95 Implement conversions between dates and strings.
Remove the final cruft associated with the old date code
BPB's: Roll milliseconds correctly; LOCALE_NOUSEROVERRIDE for num
parsing.
Implement VarAbs and VarNot.
2003-12-09 00:05:31 +00:00
Jon Griffiths dce7644bdc Add hash tables for all supported languages.
Remove some useless includes.
2003-12-02 03:51:10 +00:00
Marcus Meissner 236ad0df3c Use correct pointer for SysFreeString. 2003-12-01 22:36:49 +00:00
Alexandre Julliard 5f8223670a Porting fixes. 2003-11-28 23:19:30 +00:00
Dimitrie O. Paun 99bf92e338 SysReAllocStringLen is documented to segfault on NULL pointer. 2003-11-26 03:35:16 +00:00
Jon Griffiths 392cbdf7b8 Tests for the non-variant date conversion functions. 2003-11-25 01:50:10 +00:00
Jon Griffiths 4f0f1d9253 Improve/shrink variant dumping code. 2003-11-25 01:49:48 +00:00
Jon Griffiths d537c955bc Implemented the variant formatting functions.
Bool->bstr makes a number str unless [ALPHA|LOCAL]BOOL is passed.
2003-11-25 01:49:31 +00:00
Jon Griffiths f9bca5eaf7 Macros for dumping a variants type and flags.
Fix the date inlines.
Round negative numbers with fractional parts > 0.5 correctly.
2003-11-25 01:48:51 +00:00
Ivan Leo Murray-Smith 15a9d28707 Added/updated Italian resources. 2003-11-19 02:14:44 +00:00
Dmitry Timoshkov 1fa82e51c2 Apply same magic to LibAttr.lcid from MSFT to SLTG. 2003-11-18 00:02:25 +00:00
Jon Griffiths 136fa03fbf Implement the non-variant date conversions correctly, without going
through 'struct tm' first. Handle negative & 'rolling' dates too.
2003-11-14 21:01:36 +00:00
Jon Griffiths 2f558b53f1 Add some missing prototypes/defines.
OaBuildVersion() returns a ULONG, not UINT.
2003-11-14 21:01:15 +00:00
Jon Griffiths bb61fe35a2 Dump a few more known variant types.
Don't call DateToTM() - it's going away soon.
2003-11-14 20:59:46 +00:00
Gerald Pfeifer 5cc4b3ba16 Removed dead code in VarDateFromUI2(). 2003-11-09 01:21:04 +00:00
Marcelo Duarte 8defcd386c Localization to the Portuguese of Brazil. 2003-11-05 23:27:01 +00:00
Marcus Meissner 49eaa0db2b Do not coerce arguments of ITypeLib::Invoke in-place, or we get
corrupted variants.
Handle V_ARRAY | something -> VT_SAFEARRAY, as this is a NOP.
2003-11-03 22:13:05 +00:00
Francois Gouget f405629e8e Weekly spelling fixes. 2003-10-28 21:45:30 +00:00
Alexandre Julliard 81db03dd61 The imported typelib name must be converted to Unicode. 2003-10-16 19:09:41 +00:00
Jon Griffiths cc83d9addc Add resources for boolean strings in several languages. 2003-10-15 20:50:24 +00:00
Gerald Pfeifer 0974c154cb Remove unused variables mdays, months, days, and DateStyle. 2003-10-14 20:10:16 +00:00
Dimitrie O. Paun fbdfd910c1 Remove SYMBOLFILE and LDDLLFLAGS from Makefiles. 2003-10-11 01:09:15 +00:00
Jon Griffiths 9194267814 Documentation update. 2003-10-10 23:33:59 +00:00
Daniel Marmier 0348649853 Fixed warnings with gcc option "-Wwrite-strings". 2003-10-06 21:03:32 +00:00
Jon Griffiths 72d7e5b10d Tests for recent variant changes. 2003-10-03 04:34:34 +00:00
Jon Griffiths 166e96d11f Add VarParseNumFromStr()/VarNumFromParseNum(), use them for
conversions.
VariantInit(): Only touch V_VT field.
VariantClear(): Support IRecordInfo, don't free null bstrs.
Add support for upcoming vtypes, remove dead code, docs.
2003-10-03 03:36:46 +00:00
Francois Gouget 224063f033 Some spelling fixes.
Fix the case of WineHQ.
2003-09-29 20:20:53 +00:00